Compare commits
4 Commits
main
...
fix/args-u
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7bb65de4f | ||
|
|
f5b9bc7b69 | ||
|
|
8e3a6f0ccd | ||
|
|
7f874b4756 |
4
index.ts
4
index.ts
@@ -1,4 +1,4 @@
|
|||||||
export * from './logger';
|
export * from './logger';
|
||||||
export { LoggerComponent, LogLevel, getLogger, logger } from './logger';
|
export { LoggerComponent, LogLevel, getLogger, logger } from './logger';
|
||||||
export const version = '1.0.0';
|
export const version = '1.0.1-beta.4';
|
||||||
export const ior = 'com.metatrom.examples.logger@1.0.0';
|
export const ior = 'com.metatrom.universal-components.logger@1.0.1-beta.4';
|
||||||
|
|||||||
18
logger.d.ts
vendored
18
logger.d.ts
vendored
@@ -1,14 +1,13 @@
|
|||||||
declare module 'ior:esm:com.metatrom.examples.logger@1.0.0' {
|
export enum LogLevel {
|
||||||
export enum LogLevel {
|
|
||||||
TRACE = 0,
|
TRACE = 0,
|
||||||
DEBUG = 1,
|
DEBUG = 1,
|
||||||
INFO = 2,
|
INFO = 2,
|
||||||
WARN = 3,
|
WARN = 3,
|
||||||
ERROR = 4,
|
ERROR = 4,
|
||||||
FATAL = 5,
|
FATAL = 5,
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ILoggerComponent {
|
export interface ILoggerComponent {
|
||||||
init(): Promise<void>;
|
init(): Promise<void>;
|
||||||
setLevel(level: LogLevel): void;
|
setLevel(level: LogLevel): void;
|
||||||
trace(message: string, ...args: unknown[]): void;
|
trace(message: string, ...args: unknown[]): void;
|
||||||
@@ -18,9 +17,9 @@ declare module 'ior:esm:com.metatrom.examples.logger@1.0.0' {
|
|||||||
error(message: string, ...args: unknown[]): void;
|
error(message: string, ...args: unknown[]): void;
|
||||||
fatal(message: string, ...args: unknown[]): void;
|
fatal(message: string, ...args: unknown[]): void;
|
||||||
child(context: string): ILoggerComponent;
|
child(context: string): ILoggerComponent;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LoggerComponent implements ILoggerComponent {
|
export class LoggerComponent implements ILoggerComponent {
|
||||||
constructor(context?: string);
|
constructor(context?: string);
|
||||||
init(): Promise<void>;
|
init(): Promise<void>;
|
||||||
setLevel(level: LogLevel): void;
|
setLevel(level: LogLevel): void;
|
||||||
@@ -31,8 +30,7 @@ declare module 'ior:esm:com.metatrom.examples.logger@1.0.0' {
|
|||||||
error(message: string, ...args: unknown[]): void;
|
error(message: string, ...args: unknown[]): void;
|
||||||
fatal(message: string, ...args: unknown[]): void;
|
fatal(message: string, ...args: unknown[]): void;
|
||||||
child(context: string): ILoggerComponent;
|
child(context: string): ILoggerComponent;
|
||||||
}
|
|
||||||
|
|
||||||
export function getLogger(context?: string): ILoggerComponent;
|
|
||||||
export const logger: LoggerComponent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getLogger(context?: string): ILoggerComponent;
|
||||||
|
export const logger: LoggerComponent;
|
||||||
|
|||||||
22
logger.ts
22
logger.ts
@@ -93,7 +93,8 @@ export class LoggerComponent implements ILoggerComponent {
|
|||||||
|
|
||||||
// Format the main message
|
// Format the main message
|
||||||
let formattedMessage = message;
|
let formattedMessage = message;
|
||||||
if (args.length > 0) {
|
// Defensive check: ensure args is defined and is an array
|
||||||
|
if (args && Array.isArray(args) && args.length > 0) {
|
||||||
// Handle object arguments
|
// Handle object arguments
|
||||||
const argStrings = args.map((arg) => {
|
const argStrings = args.map((arg) => {
|
||||||
// Special handling for Error objects
|
// Special handling for Error objects
|
||||||
@@ -122,10 +123,10 @@ export class LoggerComponent implements ILoggerComponent {
|
|||||||
return `${COLORS.DIM}[${timestamp}]${COLORS.RESET} ${levelColor}[${levelName}]${COLORS.RESET} ${COLORS.BRIGHT}[${this.context}]${COLORS.RESET} ${formattedMessage}`;
|
return `${COLORS.DIM}[${timestamp}]${COLORS.RESET} ${levelColor}[${levelName}]${COLORS.RESET} ${COLORS.BRIGHT}[${this.context}]${COLORS.RESET} ${formattedMessage}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private log(level: LogLevel, message: string, args: unknown[]): void {
|
private log(level: LogLevel, message: string, args: unknown[] = []): void {
|
||||||
if (level < this.level) return;
|
if (level < this.level) return;
|
||||||
|
|
||||||
const formattedMessage = this.formatMessage(level, message, args);
|
const formattedMessage = this.formatMessage(level, message, args || []);
|
||||||
|
|
||||||
switch (level) {
|
switch (level) {
|
||||||
case LogLevel.TRACE:
|
case LogLevel.TRACE:
|
||||||
@@ -176,14 +177,19 @@ export class LoggerComponent implements ILoggerComponent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Export a singleton instance for convenience
|
// Cache logger instances by context to avoid recreating them
|
||||||
let defaultLogger: LoggerComponent | null = null;
|
const loggerCache = new Map<string, LoggerComponent>();
|
||||||
|
|
||||||
export function getLogger(context = 'main'): ILoggerComponent {
|
export function getLogger(context = 'main'): ILoggerComponent {
|
||||||
if (!defaultLogger) {
|
// Return cached logger for this context if it exists
|
||||||
defaultLogger = new LoggerComponent(context);
|
if (loggerCache.has(context)) {
|
||||||
|
return loggerCache.get(context)!;
|
||||||
}
|
}
|
||||||
return defaultLogger;
|
|
||||||
|
// Create new logger for this context
|
||||||
|
const newLogger = new LoggerComponent(context);
|
||||||
|
loggerCache.set(context, newLogger);
|
||||||
|
return newLogger;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Export default instance
|
// Export default instance
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@metatrom/logger",
|
"name": "@metatrom/logger",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1-beta.4",
|
||||||
"main": "logger.ts",
|
"main": "index.ts",
|
||||||
|
"types": "logger.d.ts",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"metatrom": {
|
"metatrom": {
|
||||||
"ior": "com.metatrom.universal-components.logger@1.0.0",
|
"ior": "com.metatrom.universal-components.logger@1.0.1-beta.4",
|
||||||
"capabilities": {
|
"capabilities": {
|
||||||
"p2p": false,
|
"p2p": false,
|
||||||
"contracts": false,
|
"contracts": false,
|
||||||
|
|||||||
Reference in New Issue
Block a user