Compare commits
4 Commits
1.0.0
...
v1.0.1-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7bb65de4f | ||
|
|
f5b9bc7b69 | ||
|
|
8e3a6f0ccd | ||
|
|
7f874b4756 |
4
index.ts
4
index.ts
@@ -1,4 +1,4 @@
|
||||
export * from './logger';
|
||||
export { LoggerComponent, LogLevel, getLogger, logger } from './logger';
|
||||
export const version = '1.0.0';
|
||||
export const ior = 'com.metatrom.examples.logger@1.0.0';
|
||||
export const version = '1.0.1-beta.4';
|
||||
export const ior = 'com.metatrom.universal-components.logger@1.0.1-beta.4';
|
||||
|
||||
2
logger.d.ts
vendored
2
logger.d.ts
vendored
@@ -1,4 +1,3 @@
|
||||
declare module 'ior:esm:com.metatrom.examples.logger@1.0.0' {
|
||||
export enum LogLevel {
|
||||
TRACE = 0,
|
||||
DEBUG = 1,
|
||||
@@ -35,4 +34,3 @@ declare module 'ior:esm:com.metatrom.examples.logger@1.0.0' {
|
||||
|
||||
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
|
||||
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
|
||||
const argStrings = args.map((arg) => {
|
||||
// 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}`;
|
||||
}
|
||||
|
||||
private log(level: LogLevel, message: string, args: unknown[]): void {
|
||||
private log(level: LogLevel, message: string, args: unknown[] = []): void {
|
||||
if (level < this.level) return;
|
||||
|
||||
const formattedMessage = this.formatMessage(level, message, args);
|
||||
const formattedMessage = this.formatMessage(level, message, args || []);
|
||||
|
||||
switch (level) {
|
||||
case LogLevel.TRACE:
|
||||
@@ -176,14 +177,19 @@ export class LoggerComponent implements ILoggerComponent {
|
||||
}
|
||||
}
|
||||
|
||||
// Export a singleton instance for convenience
|
||||
let defaultLogger: LoggerComponent | null = null;
|
||||
// Cache logger instances by context to avoid recreating them
|
||||
const loggerCache = new Map<string, LoggerComponent>();
|
||||
|
||||
export function getLogger(context = 'main'): ILoggerComponent {
|
||||
if (!defaultLogger) {
|
||||
defaultLogger = new LoggerComponent(context);
|
||||
// Return cached logger for this context if it exists
|
||||
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
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
{
|
||||
"name": "@metatrom/logger",
|
||||
"version": "1.0.0",
|
||||
"main": "logger.ts",
|
||||
"version": "1.0.1-beta.4",
|
||||
"main": "index.ts",
|
||||
"types": "logger.d.ts",
|
||||
"type": "module",
|
||||
"metatrom": {
|
||||
"ior": "com.metatrom.universal-components.logger@1.0.0",
|
||||
"ior": "com.metatrom.universal-components.logger@1.0.1-beta.4",
|
||||
"capabilities": {
|
||||
"p2p": false,
|
||||
"contracts": false,
|
||||
|
||||
Reference in New Issue
Block a user