@noego/logger 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/abstract_logger.cjs +6 -2
- package/dist/core/abstract_logger.cjs.map +1 -1
- package/dist/core/abstract_logger.d.cts +3 -1
- package/dist/core/abstract_logger.d.ts +3 -1
- package/dist/core/abstract_logger.js +7 -3
- package/dist/core/abstract_logger.js.map +1 -1
- package/dist/core/log_level.cjs +55 -37
- package/dist/core/log_level.cjs.map +1 -1
- package/dist/core/log_level.d.cts +17 -9
- package/dist/core/log_level.d.ts +17 -9
- package/dist/core/log_level.js +52 -36
- package/dist/core/log_level.js.map +1 -1
- package/dist/core/logging_manager.cjs +8 -4
- package/dist/core/logging_manager.cjs.map +1 -1
- package/dist/core/logging_manager.d.cts +9 -8
- package/dist/core/logging_manager.d.ts +9 -8
- package/dist/core/logging_manager.js +9 -5
- package/dist/core/logging_manager.js.map +1 -1
- package/dist/get_logger.d.cts +1 -1
- package/dist/get_logger.d.ts +1 -1
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/transports/console.cjs.map +1 -1
- package/dist/transports/console.d.cts +1 -1
- package/dist/transports/console.d.ts +1 -1
- package/dist/transports/console.js.map +1 -1
- package/dist/transports/console_transport.cjs +196 -13
- package/dist/transports/console_transport.cjs.map +1 -1
- package/dist/transports/console_transport.d.cts +11 -1
- package/dist/transports/console_transport.d.ts +11 -1
- package/dist/transports/console_transport.js +196 -13
- package/dist/transports/console_transport.js.map +1 -1
- package/package.json +2 -2
|
@@ -107,8 +107,12 @@ class AbstractLogger {
|
|
|
107
107
|
fatal(message, ...args) {
|
|
108
108
|
this.log(import_log_level.LogLevel.FATAL, message, args);
|
|
109
109
|
}
|
|
110
|
+
logAt(level, message, ...args) {
|
|
111
|
+
this.log(level, message, args);
|
|
112
|
+
}
|
|
110
113
|
log(level, message, args) {
|
|
111
|
-
|
|
114
|
+
const parsedLevel = (0, import_log_level.parseLogLevel)(level);
|
|
115
|
+
if (!this.manager.shouldLog(parsedLevel, this.name)) return;
|
|
112
116
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
113
117
|
let argsContext = args.length > 0 ? args.length === 1 ? formatArg(args[0]) : args.map(formatArg) : void 0;
|
|
114
118
|
let context;
|
|
@@ -121,7 +125,7 @@ class AbstractLogger {
|
|
|
121
125
|
}
|
|
122
126
|
this.manager.log({
|
|
123
127
|
timestamp,
|
|
124
|
-
level: (0, import_log_level.logLevelName)(
|
|
128
|
+
level: (0, import_log_level.logLevelName)(parsedLevel),
|
|
125
129
|
logger: this.name,
|
|
126
130
|
message,
|
|
127
131
|
context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/abstract_logger.ts"],"sourcesContent":["import { LogLevel, logLevelName } from \"./log_level.cjs\";\nimport type { LogEntry } from \"./log_transport.cjs\";\nimport type { LoggingManager } from \"./logging_manager.cjs\";\n\n/**\n * Safely stringifies values, handling circular references, bigints, Errors, and symbols.\n */\nfunction safeJsonStringify(value: unknown): string {\n const seen = new WeakSet<object>();\n try {\n return JSON.stringify(value, (_key, val: unknown) => {\n if (typeof val === \"bigint\") return val.toString();\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val)) return \"[Circular]\";\n seen.add(val);\n }\n if (val instanceof Error) {\n return { name: val.name, message: val.message, stack: val.stack };\n }\n return val;\n });\n } catch {\n return '\"[Unserializable]\"';\n }\n}\n\n/**\n * Formats an argument for logging, converting special types to loggable values.\n */\nfunction formatArg(arg: unknown): unknown {\n if (arg === undefined) return \"undefined\";\n if (arg === null) return null;\n\n if (arg instanceof Error) {\n return { name: arg.name, message: arg.message, stack: arg.stack };\n }\n\n switch (typeof arg) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return arg;\n case \"bigint\":\n return arg.toString();\n case \"symbol\":\n return String(arg);\n case \"function\":\n return `[Function${arg.name ? `: ${arg.name}` : \"\"}]`;\n default:\n return arg;\n }\n}\n\n/**\n * Formats an argument as a string for logging.\n */\nfunction formatArgAsString(arg: unknown): string {\n const formatted = formatArg(arg);\n if (typeof formatted === \"string\") return formatted;\n return safeJsonStringify(formatted);\n}\n\n/**\n * Public logger interface with all logging methods.\n */\nexport interface Logger {\n named(name: string): Logger;\n withContext(context: Record<string, unknown>): Logger;\n trace(message: string, ...args: unknown[]): void;\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n fatal(message: string, ...args: unknown[]): void;\n}\n\n/**\n * Base logger class providing logging functionality.\n * Not exported directly; use Logger interface and NamedLogger class.\n */\nabstract class AbstractLogger implements Logger {\n protected constructor(\n private readonly name: string,\n protected readonly manager: LoggingManager,\n private readonly contextData?: Record<string, unknown>\n ) {}\n\n /**\n * Creates a new logger with the specified name.\n * Replaces the current logger's name (not hierarchical).\n */\n named(name: string): Logger {\n return new NamedLogger(name, this.manager, this.contextData);\n }\n\n /**\n * Creates a new logger with additional context.\n * Context is merged into every log entry's context field.\n * If this logger already has context, both contexts are merged.\n * Returns a new logger instance (immutable operation).\n */\n withContext(context: Record<string, unknown>): Logger {\n const mergedContext = this.contextData\n ? { ...this.contextData, ...context }\n : context;\n return new NamedLogger(this.name, this.manager, mergedContext);\n }\n\n trace(message: string, ...args: unknown[]): void {\n this.log(LogLevel.TRACE, message, args);\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log(LogLevel.DEBUG, message, args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log(LogLevel.INFO, message, args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log(LogLevel.WARN, message, args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log(LogLevel.ERROR, message, args);\n }\n\n fatal(message: string, ...args: unknown[]): void {\n this.log(LogLevel.FATAL, message, args);\n }\n\n private log(level:
|
|
1
|
+
{"version":3,"sources":["../../src/core/abstract_logger.ts"],"sourcesContent":["import { LogLevel, type LogLevelInput, logLevelName, parseLogLevel } from \"./log_level.cjs\";\nimport type { LogEntry } from \"./log_transport.cjs\";\nimport type { LoggingManager } from \"./logging_manager.cjs\";\n\n/**\n * Safely stringifies values, handling circular references, bigints, Errors, and symbols.\n */\nfunction safeJsonStringify(value: unknown): string {\n const seen = new WeakSet<object>();\n try {\n return JSON.stringify(value, (_key, val: unknown) => {\n if (typeof val === \"bigint\") return val.toString();\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val)) return \"[Circular]\";\n seen.add(val);\n }\n if (val instanceof Error) {\n return { name: val.name, message: val.message, stack: val.stack };\n }\n return val;\n });\n } catch {\n return '\"[Unserializable]\"';\n }\n}\n\n/**\n * Formats an argument for logging, converting special types to loggable values.\n */\nfunction formatArg(arg: unknown): unknown {\n if (arg === undefined) return \"undefined\";\n if (arg === null) return null;\n\n if (arg instanceof Error) {\n return { name: arg.name, message: arg.message, stack: arg.stack };\n }\n\n switch (typeof arg) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return arg;\n case \"bigint\":\n return arg.toString();\n case \"symbol\":\n return String(arg);\n case \"function\":\n return `[Function${arg.name ? `: ${arg.name}` : \"\"}]`;\n default:\n return arg;\n }\n}\n\n/**\n * Formats an argument as a string for logging.\n */\nfunction formatArgAsString(arg: unknown): string {\n const formatted = formatArg(arg);\n if (typeof formatted === \"string\") return formatted;\n return safeJsonStringify(formatted);\n}\n\n/**\n * Public logger interface with all logging methods.\n */\nexport interface Logger {\n named(name: string): Logger;\n withContext(context: Record<string, unknown>): Logger;\n trace(message: string, ...args: unknown[]): void;\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n fatal(message: string, ...args: unknown[]): void;\n logAt(level: LogLevelInput, message: string, ...args: unknown[]): void;\n}\n\n/**\n * Base logger class providing logging functionality.\n * Not exported directly; use Logger interface and NamedLogger class.\n */\nabstract class AbstractLogger implements Logger {\n protected constructor(\n private readonly name: string,\n protected readonly manager: LoggingManager,\n private readonly contextData?: Record<string, unknown>\n ) {}\n\n /**\n * Creates a new logger with the specified name.\n * Replaces the current logger's name (not hierarchical).\n */\n named(name: string): Logger {\n return new NamedLogger(name, this.manager, this.contextData);\n }\n\n /**\n * Creates a new logger with additional context.\n * Context is merged into every log entry's context field.\n * If this logger already has context, both contexts are merged.\n * Returns a new logger instance (immutable operation).\n */\n withContext(context: Record<string, unknown>): Logger {\n const mergedContext = this.contextData\n ? { ...this.contextData, ...context }\n : context;\n return new NamedLogger(this.name, this.manager, mergedContext);\n }\n\n trace(message: string, ...args: unknown[]): void {\n this.log(LogLevel.TRACE, message, args);\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log(LogLevel.DEBUG, message, args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log(LogLevel.INFO, message, args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log(LogLevel.WARN, message, args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log(LogLevel.ERROR, message, args);\n }\n\n fatal(message: string, ...args: unknown[]): void {\n this.log(LogLevel.FATAL, message, args);\n }\n\n logAt(level: LogLevelInput, message: string, ...args: unknown[]): void {\n this.log(level, message, args);\n }\n\n private log(level: LogLevelInput, message: string, args: unknown[]): void {\n const parsedLevel = parseLogLevel(level);\n\n // Pass logger name to support per-logger level overrides\n if (!this.manager.shouldLog(parsedLevel, this.name)) return;\n\n const timestamp = new Date().toISOString();\n\n // Format args as context\n let argsContext = args.length > 0\n ? (args.length === 1 ? formatArg(args[0]) : args.map(formatArg))\n : undefined;\n\n // Merge with contextData if present\n let context: unknown;\n if (this.contextData && argsContext !== undefined) {\n // Both contextData and args exist - merge them\n context = { ...this.contextData, args: argsContext };\n } else if (this.contextData) {\n // Only contextData exists\n context = this.contextData;\n } else {\n // Only args exist (or neither)\n context = argsContext;\n }\n\n this.manager.log({\n timestamp,\n level: logLevelName(parsedLevel),\n logger: this.name,\n message,\n context,\n });\n }\n}\n\n/**\n * Public-facing logger class with a specific name.\n * Use getLogger() factory to create instances.\n */\nexport class NamedLogger extends AbstractLogger {\n constructor(\n name: string,\n manager: LoggingManager,\n contextData?: Record<string, unknown>\n ) {\n super(name, manager, contextData);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { LogLevelInput } from './log_level.cjs';
|
|
1
2
|
import { LoggingManager } from './logging_manager.cjs';
|
|
2
|
-
import './log_level.cjs';
|
|
3
3
|
import './log_transport.cjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -14,6 +14,7 @@ interface Logger {
|
|
|
14
14
|
warn(message: string, ...args: unknown[]): void;
|
|
15
15
|
error(message: string, ...args: unknown[]): void;
|
|
16
16
|
fatal(message: string, ...args: unknown[]): void;
|
|
17
|
+
logAt(level: LogLevelInput, message: string, ...args: unknown[]): void;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
20
|
* Base logger class providing logging functionality.
|
|
@@ -42,6 +43,7 @@ declare abstract class AbstractLogger implements Logger {
|
|
|
42
43
|
warn(message: string, ...args: unknown[]): void;
|
|
43
44
|
error(message: string, ...args: unknown[]): void;
|
|
44
45
|
fatal(message: string, ...args: unknown[]): void;
|
|
46
|
+
logAt(level: LogLevelInput, message: string, ...args: unknown[]): void;
|
|
45
47
|
private log;
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { LogLevelInput } from './log_level.js';
|
|
1
2
|
import { LoggingManager } from './logging_manager.js';
|
|
2
|
-
import './log_level.js';
|
|
3
3
|
import './log_transport.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -14,6 +14,7 @@ interface Logger {
|
|
|
14
14
|
warn(message: string, ...args: unknown[]): void;
|
|
15
15
|
error(message: string, ...args: unknown[]): void;
|
|
16
16
|
fatal(message: string, ...args: unknown[]): void;
|
|
17
|
+
logAt(level: LogLevelInput, message: string, ...args: unknown[]): void;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
20
|
* Base logger class providing logging functionality.
|
|
@@ -42,6 +43,7 @@ declare abstract class AbstractLogger implements Logger {
|
|
|
42
43
|
warn(message: string, ...args: unknown[]): void;
|
|
43
44
|
error(message: string, ...args: unknown[]): void;
|
|
44
45
|
fatal(message: string, ...args: unknown[]): void;
|
|
46
|
+
logAt(level: LogLevelInput, message: string, ...args: unknown[]): void;
|
|
45
47
|
private log;
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LogLevel, logLevelName } from "./log_level.js";
|
|
1
|
+
import { LogLevel, logLevelName, parseLogLevel } from "./log_level.js";
|
|
2
2
|
function safeJsonStringify(value) {
|
|
3
3
|
const seen = /* @__PURE__ */ new WeakSet();
|
|
4
4
|
try {
|
|
@@ -84,8 +84,12 @@ class AbstractLogger {
|
|
|
84
84
|
fatal(message, ...args) {
|
|
85
85
|
this.log(LogLevel.FATAL, message, args);
|
|
86
86
|
}
|
|
87
|
+
logAt(level, message, ...args) {
|
|
88
|
+
this.log(level, message, args);
|
|
89
|
+
}
|
|
87
90
|
log(level, message, args) {
|
|
88
|
-
|
|
91
|
+
const parsedLevel = parseLogLevel(level);
|
|
92
|
+
if (!this.manager.shouldLog(parsedLevel, this.name)) return;
|
|
89
93
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
90
94
|
let argsContext = args.length > 0 ? args.length === 1 ? formatArg(args[0]) : args.map(formatArg) : void 0;
|
|
91
95
|
let context;
|
|
@@ -98,7 +102,7 @@ class AbstractLogger {
|
|
|
98
102
|
}
|
|
99
103
|
this.manager.log({
|
|
100
104
|
timestamp,
|
|
101
|
-
level: logLevelName(
|
|
105
|
+
level: logLevelName(parsedLevel),
|
|
102
106
|
logger: this.name,
|
|
103
107
|
message,
|
|
104
108
|
context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/abstract_logger.ts"],"sourcesContent":["import { LogLevel, logLevelName } from \"./log_level.js\";\nimport type { LogEntry } from \"./log_transport.js\";\nimport type { LoggingManager } from \"./logging_manager.js\";\n\n/**\n * Safely stringifies values, handling circular references, bigints, Errors, and symbols.\n */\nfunction safeJsonStringify(value: unknown): string {\n const seen = new WeakSet<object>();\n try {\n return JSON.stringify(value, (_key, val: unknown) => {\n if (typeof val === \"bigint\") return val.toString();\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val)) return \"[Circular]\";\n seen.add(val);\n }\n if (val instanceof Error) {\n return { name: val.name, message: val.message, stack: val.stack };\n }\n return val;\n });\n } catch {\n return '\"[Unserializable]\"';\n }\n}\n\n/**\n * Formats an argument for logging, converting special types to loggable values.\n */\nfunction formatArg(arg: unknown): unknown {\n if (arg === undefined) return \"undefined\";\n if (arg === null) return null;\n\n if (arg instanceof Error) {\n return { name: arg.name, message: arg.message, stack: arg.stack };\n }\n\n switch (typeof arg) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return arg;\n case \"bigint\":\n return arg.toString();\n case \"symbol\":\n return String(arg);\n case \"function\":\n return `[Function${arg.name ? `: ${arg.name}` : \"\"}]`;\n default:\n return arg;\n }\n}\n\n/**\n * Formats an argument as a string for logging.\n */\nfunction formatArgAsString(arg: unknown): string {\n const formatted = formatArg(arg);\n if (typeof formatted === \"string\") return formatted;\n return safeJsonStringify(formatted);\n}\n\n/**\n * Public logger interface with all logging methods.\n */\nexport interface Logger {\n named(name: string): Logger;\n withContext(context: Record<string, unknown>): Logger;\n trace(message: string, ...args: unknown[]): void;\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n fatal(message: string, ...args: unknown[]): void;\n}\n\n/**\n * Base logger class providing logging functionality.\n * Not exported directly; use Logger interface and NamedLogger class.\n */\nabstract class AbstractLogger implements Logger {\n protected constructor(\n private readonly name: string,\n protected readonly manager: LoggingManager,\n private readonly contextData?: Record<string, unknown>\n ) {}\n\n /**\n * Creates a new logger with the specified name.\n * Replaces the current logger's name (not hierarchical).\n */\n named(name: string): Logger {\n return new NamedLogger(name, this.manager, this.contextData);\n }\n\n /**\n * Creates a new logger with additional context.\n * Context is merged into every log entry's context field.\n * If this logger already has context, both contexts are merged.\n * Returns a new logger instance (immutable operation).\n */\n withContext(context: Record<string, unknown>): Logger {\n const mergedContext = this.contextData\n ? { ...this.contextData, ...context }\n : context;\n return new NamedLogger(this.name, this.manager, mergedContext);\n }\n\n trace(message: string, ...args: unknown[]): void {\n this.log(LogLevel.TRACE, message, args);\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log(LogLevel.DEBUG, message, args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log(LogLevel.INFO, message, args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log(LogLevel.WARN, message, args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log(LogLevel.ERROR, message, args);\n }\n\n fatal(message: string, ...args: unknown[]): void {\n this.log(LogLevel.FATAL, message, args);\n }\n\n private log(level:
|
|
1
|
+
{"version":3,"sources":["../../src/core/abstract_logger.ts"],"sourcesContent":["import { LogLevel, type LogLevelInput, logLevelName, parseLogLevel } from \"./log_level.js\";\nimport type { LogEntry } from \"./log_transport.js\";\nimport type { LoggingManager } from \"./logging_manager.js\";\n\n/**\n * Safely stringifies values, handling circular references, bigints, Errors, and symbols.\n */\nfunction safeJsonStringify(value: unknown): string {\n const seen = new WeakSet<object>();\n try {\n return JSON.stringify(value, (_key, val: unknown) => {\n if (typeof val === \"bigint\") return val.toString();\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val)) return \"[Circular]\";\n seen.add(val);\n }\n if (val instanceof Error) {\n return { name: val.name, message: val.message, stack: val.stack };\n }\n return val;\n });\n } catch {\n return '\"[Unserializable]\"';\n }\n}\n\n/**\n * Formats an argument for logging, converting special types to loggable values.\n */\nfunction formatArg(arg: unknown): unknown {\n if (arg === undefined) return \"undefined\";\n if (arg === null) return null;\n\n if (arg instanceof Error) {\n return { name: arg.name, message: arg.message, stack: arg.stack };\n }\n\n switch (typeof arg) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return arg;\n case \"bigint\":\n return arg.toString();\n case \"symbol\":\n return String(arg);\n case \"function\":\n return `[Function${arg.name ? `: ${arg.name}` : \"\"}]`;\n default:\n return arg;\n }\n}\n\n/**\n * Formats an argument as a string for logging.\n */\nfunction formatArgAsString(arg: unknown): string {\n const formatted = formatArg(arg);\n if (typeof formatted === \"string\") return formatted;\n return safeJsonStringify(formatted);\n}\n\n/**\n * Public logger interface with all logging methods.\n */\nexport interface Logger {\n named(name: string): Logger;\n withContext(context: Record<string, unknown>): Logger;\n trace(message: string, ...args: unknown[]): void;\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n fatal(message: string, ...args: unknown[]): void;\n logAt(level: LogLevelInput, message: string, ...args: unknown[]): void;\n}\n\n/**\n * Base logger class providing logging functionality.\n * Not exported directly; use Logger interface and NamedLogger class.\n */\nabstract class AbstractLogger implements Logger {\n protected constructor(\n private readonly name: string,\n protected readonly manager: LoggingManager,\n private readonly contextData?: Record<string, unknown>\n ) {}\n\n /**\n * Creates a new logger with the specified name.\n * Replaces the current logger's name (not hierarchical).\n */\n named(name: string): Logger {\n return new NamedLogger(name, this.manager, this.contextData);\n }\n\n /**\n * Creates a new logger with additional context.\n * Context is merged into every log entry's context field.\n * If this logger already has context, both contexts are merged.\n * Returns a new logger instance (immutable operation).\n */\n withContext(context: Record<string, unknown>): Logger {\n const mergedContext = this.contextData\n ? { ...this.contextData, ...context }\n : context;\n return new NamedLogger(this.name, this.manager, mergedContext);\n }\n\n trace(message: string, ...args: unknown[]): void {\n this.log(LogLevel.TRACE, message, args);\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log(LogLevel.DEBUG, message, args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log(LogLevel.INFO, message, args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log(LogLevel.WARN, message, args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log(LogLevel.ERROR, message, args);\n }\n\n fatal(message: string, ...args: unknown[]): void {\n this.log(LogLevel.FATAL, message, args);\n }\n\n logAt(level: LogLevelInput, message: string, ...args: unknown[]): void {\n this.log(level, message, args);\n }\n\n private log(level: LogLevelInput, message: string, args: unknown[]): void {\n const parsedLevel = parseLogLevel(level);\n\n // Pass logger name to support per-logger level overrides\n if (!this.manager.shouldLog(parsedLevel, this.name)) return;\n\n const timestamp = new Date().toISOString();\n\n // Format args as context\n let argsContext = args.length > 0\n ? (args.length === 1 ? formatArg(args[0]) : args.map(formatArg))\n : undefined;\n\n // Merge with contextData if present\n let context: unknown;\n if (this.contextData && argsContext !== undefined) {\n // Both contextData and args exist - merge them\n context = { ...this.contextData, args: argsContext };\n } else if (this.contextData) {\n // Only contextData exists\n context = this.contextData;\n } else {\n // Only args exist (or neither)\n context = argsContext;\n }\n\n this.manager.log({\n timestamp,\n level: logLevelName(parsedLevel),\n logger: this.name,\n message,\n context,\n });\n }\n}\n\n/**\n * Public-facing logger class with a specific name.\n * Use getLogger() factory to create instances.\n */\nexport class NamedLogger extends AbstractLogger {\n constructor(\n name: string,\n manager: LoggingManager,\n contextData?: Record<string, unknown>\n ) {\n super(name, manager, contextData);\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/core/log_level.cjs
CHANGED
|
@@ -20,59 +20,77 @@ var log_level_exports = {};
|
|
|
20
20
|
__export(log_level_exports, {
|
|
21
21
|
LogLevel: () => LogLevel,
|
|
22
22
|
logLevelName: () => logLevelName,
|
|
23
|
-
parseLogLevel: () => parseLogLevel
|
|
23
|
+
parseLogLevel: () => parseLogLevel,
|
|
24
|
+
registerLogLevel: () => registerLogLevel,
|
|
25
|
+
registerLogLevels: () => registerLogLevels
|
|
24
26
|
});
|
|
25
27
|
module.exports = __toCommonJS(log_level_exports);
|
|
26
28
|
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
|
|
27
|
-
LogLevel2[LogLevel2["TRACE"] =
|
|
28
|
-
LogLevel2[LogLevel2["DEBUG"] =
|
|
29
|
-
LogLevel2[LogLevel2["INFO"] =
|
|
30
|
-
LogLevel2[LogLevel2["WARN"] =
|
|
31
|
-
LogLevel2[LogLevel2["ERROR"] =
|
|
32
|
-
LogLevel2[LogLevel2["FATAL"] =
|
|
29
|
+
LogLevel2[LogLevel2["TRACE"] = 1e3] = "TRACE";
|
|
30
|
+
LogLevel2[LogLevel2["DEBUG"] = 2e3] = "DEBUG";
|
|
31
|
+
LogLevel2[LogLevel2["INFO"] = 3e3] = "INFO";
|
|
32
|
+
LogLevel2[LogLevel2["WARN"] = 4e3] = "WARN";
|
|
33
|
+
LogLevel2[LogLevel2["ERROR"] = 5e3] = "ERROR";
|
|
34
|
+
LogLevel2[LogLevel2["FATAL"] = 6e3] = "FATAL";
|
|
33
35
|
return LogLevel2;
|
|
34
36
|
})(LogLevel || {});
|
|
35
|
-
const
|
|
36
|
-
trace:
|
|
37
|
-
debug:
|
|
38
|
-
info:
|
|
39
|
-
warn:
|
|
40
|
-
error:
|
|
41
|
-
fatal:
|
|
42
|
-
|
|
37
|
+
const DEFAULT_LEVELS = [
|
|
38
|
+
{ name: "trace", value: 1e3 /* TRACE */ },
|
|
39
|
+
{ name: "debug", value: 2e3 /* DEBUG */ },
|
|
40
|
+
{ name: "info", value: 3e3 /* INFO */ },
|
|
41
|
+
{ name: "warn", value: 4e3 /* WARN */ },
|
|
42
|
+
{ name: "error", value: 5e3 /* ERROR */ },
|
|
43
|
+
{ name: "fatal", value: 6e3 /* FATAL */ }
|
|
44
|
+
];
|
|
45
|
+
const LEVEL_BY_NAME = /* @__PURE__ */ new Map();
|
|
46
|
+
const NAME_BY_LEVEL = /* @__PURE__ */ new Map();
|
|
47
|
+
for (const definition of DEFAULT_LEVELS) {
|
|
48
|
+
registerLogLevel(definition);
|
|
49
|
+
}
|
|
50
|
+
function registerLogLevel(definition) {
|
|
51
|
+
const normalizedName = normalizeLevelName(definition.name);
|
|
52
|
+
if (!normalizedName || !isValidLevelValue(definition.value)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
LEVEL_BY_NAME.set(normalizedName, definition.value);
|
|
56
|
+
NAME_BY_LEVEL.set(definition.value, normalizedName.toUpperCase());
|
|
57
|
+
}
|
|
58
|
+
function registerLogLevels(definitions) {
|
|
59
|
+
for (const definition of definitions) {
|
|
60
|
+
registerLogLevel(definition);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
43
63
|
function parseLogLevel(value) {
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
64
|
+
if (typeof value === "number") {
|
|
65
|
+
return isValidLevelValue(value) ? value : 3e3 /* INFO */;
|
|
66
|
+
}
|
|
67
|
+
if (!value) return 3e3 /* INFO */;
|
|
68
|
+
const normalized = normalizeLevelName(value);
|
|
69
|
+
if (!normalized) return 3e3 /* INFO */;
|
|
70
|
+
const byName = LEVEL_BY_NAME.get(normalized);
|
|
47
71
|
if (typeof byName === "number") return byName;
|
|
48
72
|
const asNumber = Number(normalized);
|
|
49
|
-
if (
|
|
73
|
+
if (isValidLevelValue(asNumber)) {
|
|
50
74
|
return asNumber;
|
|
51
75
|
}
|
|
52
|
-
return
|
|
76
|
+
return 3e3 /* INFO */;
|
|
53
77
|
}
|
|
54
78
|
function logLevelName(level) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return "WARN";
|
|
64
|
-
case 4 /* ERROR */:
|
|
65
|
-
return "ERROR";
|
|
66
|
-
case 5 /* FATAL */:
|
|
67
|
-
return "FATAL";
|
|
68
|
-
default:
|
|
69
|
-
return "INFO";
|
|
70
|
-
}
|
|
79
|
+
const parsedLevel = parseLogLevel(level);
|
|
80
|
+
return NAME_BY_LEVEL.get(parsedLevel) ?? `LEVEL_${parsedLevel}`;
|
|
81
|
+
}
|
|
82
|
+
function normalizeLevelName(name) {
|
|
83
|
+
return name.trim().toLowerCase();
|
|
84
|
+
}
|
|
85
|
+
function isValidLevelValue(value) {
|
|
86
|
+
return Number.isFinite(value) && value >= 0;
|
|
71
87
|
}
|
|
72
88
|
// Annotate the CommonJS export names for ESM import in node:
|
|
73
89
|
0 && (module.exports = {
|
|
74
90
|
LogLevel,
|
|
75
91
|
logLevelName,
|
|
76
|
-
parseLogLevel
|
|
92
|
+
parseLogLevel,
|
|
93
|
+
registerLogLevel,
|
|
94
|
+
registerLogLevels
|
|
77
95
|
});
|
|
78
96
|
//# sourceMappingURL=log_level.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/log_level.ts"],"sourcesContent":["export enum LogLevel {\n TRACE =
|
|
1
|
+
{"version":3,"sources":["../../src/core/log_level.ts"],"sourcesContent":["export enum LogLevel {\n TRACE = 1000,\n DEBUG = 2000,\n INFO = 3000,\n WARN = 4000,\n ERROR = 5000,\n FATAL = 6000,\n}\n\nexport type LogLevelValue = number;\nexport type LogLevelInput = LogLevelValue | string | undefined | null;\n\nexport interface LogLevelDefinition {\n name: string;\n value: LogLevelValue;\n}\n\nconst DEFAULT_LEVELS: LogLevelDefinition[] = [\n { name: \"trace\", value: LogLevel.TRACE },\n { name: \"debug\", value: LogLevel.DEBUG },\n { name: \"info\", value: LogLevel.INFO },\n { name: \"warn\", value: LogLevel.WARN },\n { name: \"error\", value: LogLevel.ERROR },\n { name: \"fatal\", value: LogLevel.FATAL },\n];\n\nconst LEVEL_BY_NAME = new Map<string, LogLevelValue>();\nconst NAME_BY_LEVEL = new Map<LogLevelValue, string>();\n\nfor (const definition of DEFAULT_LEVELS) {\n registerLogLevel(definition);\n}\n\nexport function registerLogLevel(definition: LogLevelDefinition): void {\n const normalizedName = normalizeLevelName(definition.name);\n if (!normalizedName || !isValidLevelValue(definition.value)) {\n return;\n }\n\n LEVEL_BY_NAME.set(normalizedName, definition.value);\n NAME_BY_LEVEL.set(definition.value, normalizedName.toUpperCase());\n}\n\nexport function registerLogLevels(definitions: LogLevelDefinition[]): void {\n for (const definition of definitions) {\n registerLogLevel(definition);\n }\n}\n\nexport function parseLogLevel(value: LogLevelInput): LogLevelValue {\n if (typeof value === \"number\") {\n return isValidLevelValue(value) ? value : LogLevel.INFO;\n }\n\n if (!value) return LogLevel.INFO;\n\n const normalized = normalizeLevelName(value);\n if (!normalized) return LogLevel.INFO;\n\n const byName = LEVEL_BY_NAME.get(normalized);\n if (typeof byName === \"number\") return byName;\n\n const asNumber = Number(normalized);\n if (isValidLevelValue(asNumber)) {\n return asNumber;\n }\n\n return LogLevel.INFO;\n}\n\nexport function logLevelName(level: LogLevelInput): string {\n const parsedLevel = parseLogLevel(level);\n return NAME_BY_LEVEL.get(parsedLevel) ?? `LEVEL_${parsedLevel}`;\n}\n\nfunction normalizeLevelName(name: string): string {\n return name.trim().toLowerCase();\n}\n\nfunction isValidLevelValue(value: number): boolean {\n return Number.isFinite(value) && value >= 0;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,WAAL,kBAAKA,cAAL;AACL,EAAAA,oBAAA,WAAQ,OAAR;AACA,EAAAA,oBAAA,WAAQ,OAAR;AACA,EAAAA,oBAAA,UAAO,OAAP;AACA,EAAAA,oBAAA,UAAO,OAAP;AACA,EAAAA,oBAAA,WAAQ,OAAR;AACA,EAAAA,oBAAA,WAAQ,OAAR;AANU,SAAAA;AAAA,GAAA;AAiBZ,MAAM,iBAAuC;AAAA,EAC3C,EAAE,MAAM,SAAS,OAAO,gBAAe;AAAA,EACvC,EAAE,MAAM,SAAS,OAAO,gBAAe;AAAA,EACvC,EAAE,MAAM,QAAQ,OAAO,eAAc;AAAA,EACrC,EAAE,MAAM,QAAQ,OAAO,eAAc;AAAA,EACrC,EAAE,MAAM,SAAS,OAAO,gBAAe;AAAA,EACvC,EAAE,MAAM,SAAS,OAAO,gBAAe;AACzC;AAEA,MAAM,gBAAgB,oBAAI,IAA2B;AACrD,MAAM,gBAAgB,oBAAI,IAA2B;AAErD,WAAW,cAAc,gBAAgB;AACvC,mBAAiB,UAAU;AAC7B;AAEO,SAAS,iBAAiB,YAAsC;AACrE,QAAM,iBAAiB,mBAAmB,WAAW,IAAI;AACzD,MAAI,CAAC,kBAAkB,CAAC,kBAAkB,WAAW,KAAK,GAAG;AAC3D;AAAA,EACF;AAEA,gBAAc,IAAI,gBAAgB,WAAW,KAAK;AAClD,gBAAc,IAAI,WAAW,OAAO,eAAe,YAAY,CAAC;AAClE;AAEO,SAAS,kBAAkB,aAAyC;AACzE,aAAW,cAAc,aAAa;AACpC,qBAAiB,UAAU;AAAA,EAC7B;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,kBAAkB,KAAK,IAAI,QAAQ;AAAA,EAC5C;AAEA,MAAI,CAAC,MAAO,QAAO;AAEnB,QAAM,aAAa,mBAAmB,KAAK;AAC3C,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,SAAS,cAAc,IAAI,UAAU;AAC3C,MAAI,OAAO,WAAW,SAAU,QAAO;AAEvC,QAAM,WAAW,OAAO,UAAU;AAClC,MAAI,kBAAkB,QAAQ,GAAG;AAC/B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,aAAa,OAA8B;AACzD,QAAM,cAAc,cAAc,KAAK;AACvC,SAAO,cAAc,IAAI,WAAW,KAAK,SAAS,WAAW;AAC/D;AAEA,SAAS,mBAAmB,MAAsB;AAChD,SAAO,KAAK,KAAK,EAAE,YAAY;AACjC;AAEA,SAAS,kBAAkB,OAAwB;AACjD,SAAO,OAAO,SAAS,KAAK,KAAK,SAAS;AAC5C;","names":["LogLevel"]}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
declare enum LogLevel {
|
|
2
|
-
TRACE =
|
|
3
|
-
DEBUG =
|
|
4
|
-
INFO =
|
|
5
|
-
WARN =
|
|
6
|
-
ERROR =
|
|
7
|
-
FATAL =
|
|
2
|
+
TRACE = 1000,
|
|
3
|
+
DEBUG = 2000,
|
|
4
|
+
INFO = 3000,
|
|
5
|
+
WARN = 4000,
|
|
6
|
+
ERROR = 5000,
|
|
7
|
+
FATAL = 6000
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
type LogLevelValue = number;
|
|
10
|
+
type LogLevelInput = LogLevelValue | string | undefined | null;
|
|
11
|
+
interface LogLevelDefinition {
|
|
12
|
+
name: string;
|
|
13
|
+
value: LogLevelValue;
|
|
14
|
+
}
|
|
15
|
+
declare function registerLogLevel(definition: LogLevelDefinition): void;
|
|
16
|
+
declare function registerLogLevels(definitions: LogLevelDefinition[]): void;
|
|
17
|
+
declare function parseLogLevel(value: LogLevelInput): LogLevelValue;
|
|
18
|
+
declare function logLevelName(level: LogLevelInput): string;
|
|
11
19
|
|
|
12
|
-
export { LogLevel, logLevelName, parseLogLevel };
|
|
20
|
+
export { LogLevel, type LogLevelDefinition, type LogLevelInput, type LogLevelValue, logLevelName, parseLogLevel, registerLogLevel, registerLogLevels };
|
package/dist/core/log_level.d.ts
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
declare enum LogLevel {
|
|
2
|
-
TRACE =
|
|
3
|
-
DEBUG =
|
|
4
|
-
INFO =
|
|
5
|
-
WARN =
|
|
6
|
-
ERROR =
|
|
7
|
-
FATAL =
|
|
2
|
+
TRACE = 1000,
|
|
3
|
+
DEBUG = 2000,
|
|
4
|
+
INFO = 3000,
|
|
5
|
+
WARN = 4000,
|
|
6
|
+
ERROR = 5000,
|
|
7
|
+
FATAL = 6000
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
type LogLevelValue = number;
|
|
10
|
+
type LogLevelInput = LogLevelValue | string | undefined | null;
|
|
11
|
+
interface LogLevelDefinition {
|
|
12
|
+
name: string;
|
|
13
|
+
value: LogLevelValue;
|
|
14
|
+
}
|
|
15
|
+
declare function registerLogLevel(definition: LogLevelDefinition): void;
|
|
16
|
+
declare function registerLogLevels(definitions: LogLevelDefinition[]): void;
|
|
17
|
+
declare function parseLogLevel(value: LogLevelInput): LogLevelValue;
|
|
18
|
+
declare function logLevelName(level: LogLevelInput): string;
|
|
11
19
|
|
|
12
|
-
export { LogLevel, logLevelName, parseLogLevel };
|
|
20
|
+
export { LogLevel, type LogLevelDefinition, type LogLevelInput, type LogLevelValue, logLevelName, parseLogLevel, registerLogLevel, registerLogLevels };
|
package/dist/core/log_level.js
CHANGED
|
@@ -1,52 +1,68 @@
|
|
|
1
1
|
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
|
|
2
|
-
LogLevel2[LogLevel2["TRACE"] =
|
|
3
|
-
LogLevel2[LogLevel2["DEBUG"] =
|
|
4
|
-
LogLevel2[LogLevel2["INFO"] =
|
|
5
|
-
LogLevel2[LogLevel2["WARN"] =
|
|
6
|
-
LogLevel2[LogLevel2["ERROR"] =
|
|
7
|
-
LogLevel2[LogLevel2["FATAL"] =
|
|
2
|
+
LogLevel2[LogLevel2["TRACE"] = 1e3] = "TRACE";
|
|
3
|
+
LogLevel2[LogLevel2["DEBUG"] = 2e3] = "DEBUG";
|
|
4
|
+
LogLevel2[LogLevel2["INFO"] = 3e3] = "INFO";
|
|
5
|
+
LogLevel2[LogLevel2["WARN"] = 4e3] = "WARN";
|
|
6
|
+
LogLevel2[LogLevel2["ERROR"] = 5e3] = "ERROR";
|
|
7
|
+
LogLevel2[LogLevel2["FATAL"] = 6e3] = "FATAL";
|
|
8
8
|
return LogLevel2;
|
|
9
9
|
})(LogLevel || {});
|
|
10
|
-
const
|
|
11
|
-
trace:
|
|
12
|
-
debug:
|
|
13
|
-
info:
|
|
14
|
-
warn:
|
|
15
|
-
error:
|
|
16
|
-
fatal:
|
|
17
|
-
|
|
10
|
+
const DEFAULT_LEVELS = [
|
|
11
|
+
{ name: "trace", value: 1e3 /* TRACE */ },
|
|
12
|
+
{ name: "debug", value: 2e3 /* DEBUG */ },
|
|
13
|
+
{ name: "info", value: 3e3 /* INFO */ },
|
|
14
|
+
{ name: "warn", value: 4e3 /* WARN */ },
|
|
15
|
+
{ name: "error", value: 5e3 /* ERROR */ },
|
|
16
|
+
{ name: "fatal", value: 6e3 /* FATAL */ }
|
|
17
|
+
];
|
|
18
|
+
const LEVEL_BY_NAME = /* @__PURE__ */ new Map();
|
|
19
|
+
const NAME_BY_LEVEL = /* @__PURE__ */ new Map();
|
|
20
|
+
for (const definition of DEFAULT_LEVELS) {
|
|
21
|
+
registerLogLevel(definition);
|
|
22
|
+
}
|
|
23
|
+
function registerLogLevel(definition) {
|
|
24
|
+
const normalizedName = normalizeLevelName(definition.name);
|
|
25
|
+
if (!normalizedName || !isValidLevelValue(definition.value)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
LEVEL_BY_NAME.set(normalizedName, definition.value);
|
|
29
|
+
NAME_BY_LEVEL.set(definition.value, normalizedName.toUpperCase());
|
|
30
|
+
}
|
|
31
|
+
function registerLogLevels(definitions) {
|
|
32
|
+
for (const definition of definitions) {
|
|
33
|
+
registerLogLevel(definition);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
18
36
|
function parseLogLevel(value) {
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
37
|
+
if (typeof value === "number") {
|
|
38
|
+
return isValidLevelValue(value) ? value : 3e3 /* INFO */;
|
|
39
|
+
}
|
|
40
|
+
if (!value) return 3e3 /* INFO */;
|
|
41
|
+
const normalized = normalizeLevelName(value);
|
|
42
|
+
if (!normalized) return 3e3 /* INFO */;
|
|
43
|
+
const byName = LEVEL_BY_NAME.get(normalized);
|
|
22
44
|
if (typeof byName === "number") return byName;
|
|
23
45
|
const asNumber = Number(normalized);
|
|
24
|
-
if (
|
|
46
|
+
if (isValidLevelValue(asNumber)) {
|
|
25
47
|
return asNumber;
|
|
26
48
|
}
|
|
27
|
-
return
|
|
49
|
+
return 3e3 /* INFO */;
|
|
28
50
|
}
|
|
29
51
|
function logLevelName(level) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return "WARN";
|
|
39
|
-
case 4 /* ERROR */:
|
|
40
|
-
return "ERROR";
|
|
41
|
-
case 5 /* FATAL */:
|
|
42
|
-
return "FATAL";
|
|
43
|
-
default:
|
|
44
|
-
return "INFO";
|
|
45
|
-
}
|
|
52
|
+
const parsedLevel = parseLogLevel(level);
|
|
53
|
+
return NAME_BY_LEVEL.get(parsedLevel) ?? `LEVEL_${parsedLevel}`;
|
|
54
|
+
}
|
|
55
|
+
function normalizeLevelName(name) {
|
|
56
|
+
return name.trim().toLowerCase();
|
|
57
|
+
}
|
|
58
|
+
function isValidLevelValue(value) {
|
|
59
|
+
return Number.isFinite(value) && value >= 0;
|
|
46
60
|
}
|
|
47
61
|
export {
|
|
48
62
|
LogLevel,
|
|
49
63
|
logLevelName,
|
|
50
|
-
parseLogLevel
|
|
64
|
+
parseLogLevel,
|
|
65
|
+
registerLogLevel,
|
|
66
|
+
registerLogLevels
|
|
51
67
|
};
|
|
52
68
|
//# sourceMappingURL=log_level.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/log_level.ts"],"sourcesContent":["export enum LogLevel {\n TRACE =
|
|
1
|
+
{"version":3,"sources":["../../src/core/log_level.ts"],"sourcesContent":["export enum LogLevel {\n TRACE = 1000,\n DEBUG = 2000,\n INFO = 3000,\n WARN = 4000,\n ERROR = 5000,\n FATAL = 6000,\n}\n\nexport type LogLevelValue = number;\nexport type LogLevelInput = LogLevelValue | string | undefined | null;\n\nexport interface LogLevelDefinition {\n name: string;\n value: LogLevelValue;\n}\n\nconst DEFAULT_LEVELS: LogLevelDefinition[] = [\n { name: \"trace\", value: LogLevel.TRACE },\n { name: \"debug\", value: LogLevel.DEBUG },\n { name: \"info\", value: LogLevel.INFO },\n { name: \"warn\", value: LogLevel.WARN },\n { name: \"error\", value: LogLevel.ERROR },\n { name: \"fatal\", value: LogLevel.FATAL },\n];\n\nconst LEVEL_BY_NAME = new Map<string, LogLevelValue>();\nconst NAME_BY_LEVEL = new Map<LogLevelValue, string>();\n\nfor (const definition of DEFAULT_LEVELS) {\n registerLogLevel(definition);\n}\n\nexport function registerLogLevel(definition: LogLevelDefinition): void {\n const normalizedName = normalizeLevelName(definition.name);\n if (!normalizedName || !isValidLevelValue(definition.value)) {\n return;\n }\n\n LEVEL_BY_NAME.set(normalizedName, definition.value);\n NAME_BY_LEVEL.set(definition.value, normalizedName.toUpperCase());\n}\n\nexport function registerLogLevels(definitions: LogLevelDefinition[]): void {\n for (const definition of definitions) {\n registerLogLevel(definition);\n }\n}\n\nexport function parseLogLevel(value: LogLevelInput): LogLevelValue {\n if (typeof value === \"number\") {\n return isValidLevelValue(value) ? value : LogLevel.INFO;\n }\n\n if (!value) return LogLevel.INFO;\n\n const normalized = normalizeLevelName(value);\n if (!normalized) return LogLevel.INFO;\n\n const byName = LEVEL_BY_NAME.get(normalized);\n if (typeof byName === \"number\") return byName;\n\n const asNumber = Number(normalized);\n if (isValidLevelValue(asNumber)) {\n return asNumber;\n }\n\n return LogLevel.INFO;\n}\n\nexport function logLevelName(level: LogLevelInput): string {\n const parsedLevel = parseLogLevel(level);\n return NAME_BY_LEVEL.get(parsedLevel) ?? `LEVEL_${parsedLevel}`;\n}\n\nfunction normalizeLevelName(name: string): string {\n return name.trim().toLowerCase();\n}\n\nfunction isValidLevelValue(value: number): boolean {\n return Number.isFinite(value) && value >= 0;\n}\n"],"mappings":"AAAO,IAAK,WAAL,kBAAKA,cAAL;AACL,EAAAA,oBAAA,WAAQ,OAAR;AACA,EAAAA,oBAAA,WAAQ,OAAR;AACA,EAAAA,oBAAA,UAAO,OAAP;AACA,EAAAA,oBAAA,UAAO,OAAP;AACA,EAAAA,oBAAA,WAAQ,OAAR;AACA,EAAAA,oBAAA,WAAQ,OAAR;AANU,SAAAA;AAAA,GAAA;AAiBZ,MAAM,iBAAuC;AAAA,EAC3C,EAAE,MAAM,SAAS,OAAO,gBAAe;AAAA,EACvC,EAAE,MAAM,SAAS,OAAO,gBAAe;AAAA,EACvC,EAAE,MAAM,QAAQ,OAAO,eAAc;AAAA,EACrC,EAAE,MAAM,QAAQ,OAAO,eAAc;AAAA,EACrC,EAAE,MAAM,SAAS,OAAO,gBAAe;AAAA,EACvC,EAAE,MAAM,SAAS,OAAO,gBAAe;AACzC;AAEA,MAAM,gBAAgB,oBAAI,IAA2B;AACrD,MAAM,gBAAgB,oBAAI,IAA2B;AAErD,WAAW,cAAc,gBAAgB;AACvC,mBAAiB,UAAU;AAC7B;AAEO,SAAS,iBAAiB,YAAsC;AACrE,QAAM,iBAAiB,mBAAmB,WAAW,IAAI;AACzD,MAAI,CAAC,kBAAkB,CAAC,kBAAkB,WAAW,KAAK,GAAG;AAC3D;AAAA,EACF;AAEA,gBAAc,IAAI,gBAAgB,WAAW,KAAK;AAClD,gBAAc,IAAI,WAAW,OAAO,eAAe,YAAY,CAAC;AAClE;AAEO,SAAS,kBAAkB,aAAyC;AACzE,aAAW,cAAc,aAAa;AACpC,qBAAiB,UAAU;AAAA,EAC7B;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,kBAAkB,KAAK,IAAI,QAAQ;AAAA,EAC5C;AAEA,MAAI,CAAC,MAAO,QAAO;AAEnB,QAAM,aAAa,mBAAmB,KAAK;AAC3C,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,SAAS,cAAc,IAAI,UAAU;AAC3C,MAAI,OAAO,WAAW,SAAU,QAAO;AAEvC,QAAM,WAAW,OAAO,UAAU;AAClC,MAAI,kBAAkB,QAAQ,GAAG;AAC/B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,aAAa,OAA8B;AACzD,QAAM,cAAc,cAAc,KAAK;AACvC,SAAO,cAAc,IAAI,WAAW,KAAK,SAAS,WAAW;AAC/D;AAEA,SAAS,mBAAmB,MAAsB;AAChD,SAAO,KAAK,KAAK,EAAE,YAAY;AACjC;AAEA,SAAS,kBAAkB,OAAwB;AACjD,SAAO,OAAO,SAAS,KAAK,KAAK,SAAS;AAC5C;","names":["LogLevel"]}
|
|
@@ -42,19 +42,20 @@ class LoggingManager {
|
|
|
42
42
|
return this.level;
|
|
43
43
|
}
|
|
44
44
|
setLevel(level) {
|
|
45
|
-
this.level = level;
|
|
45
|
+
this.level = (0, import_log_level.parseLogLevel)(level);
|
|
46
46
|
}
|
|
47
47
|
setLoggerLevel(name, level) {
|
|
48
|
-
this.loggerLevels.set(name, level);
|
|
48
|
+
this.loggerLevels.set(name, (0, import_log_level.parseLogLevel)(level));
|
|
49
49
|
}
|
|
50
50
|
shouldLog(level, loggerName) {
|
|
51
|
+
const parsedLevel = (0, import_log_level.parseLogLevel)(level);
|
|
51
52
|
if (loggerName) {
|
|
52
53
|
const loggerLevel = this.loggerLevels.get(loggerName);
|
|
53
54
|
if (loggerLevel !== void 0) {
|
|
54
|
-
return
|
|
55
|
+
return parsedLevel >= loggerLevel;
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
return
|
|
58
|
+
return parsedLevel >= this.level;
|
|
58
59
|
}
|
|
59
60
|
addTransport(transport) {
|
|
60
61
|
this.transports.push(transport);
|
|
@@ -101,6 +102,9 @@ function getManager() {
|
|
|
101
102
|
}
|
|
102
103
|
function configureLogging(options) {
|
|
103
104
|
const manager = getManager();
|
|
105
|
+
if (options.levels) {
|
|
106
|
+
(0, import_log_level.registerLogLevels)(options.levels);
|
|
107
|
+
}
|
|
104
108
|
if (options.level !== void 0) {
|
|
105
109
|
manager.setLevel(options.level);
|
|
106
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/logging_manager.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/core/logging_manager.ts"],"sourcesContent":["import { type LogLevelDefinition, type LogLevelInput, type LogLevelValue, logLevelName, parseLogLevel, registerLogLevels } from \"./log_level.cjs\";\nimport type { LogEntry, LogTransport } from \"./log_transport.cjs\";\nimport { ConsoleTransport } from \"../transports/console_transport.cjs\";\n\nconst MANAGER_SYMBOL = Symbol.for(\"@noego/logger\");\n\ninterface GlobalWithManager {\n [MANAGER_SYMBOL]?: LoggingManager;\n}\n\nexport interface ConfigureLoggingOptions {\n level?: LogLevelInput;\n loggers?: Record<string, LogLevelInput>;\n levels?: LogLevelDefinition[];\n transports?: LogTransport[];\n serviceName?: string;\n}\n\nexport class LoggingManager {\n private level: LogLevelValue;\n private transports: LogTransport[] = [];\n private service: string;\n private readonly environment: string;\n private loggerLevels: Map<string, LogLevelValue> = new Map();\n\n constructor() {\n const logLevelEnv =\n typeof process !== \"undefined\" ? process.env?.LOG_LEVEL : undefined;\n const serviceNameEnv =\n typeof process !== \"undefined\" ? process.env?.SERVICE_NAME : undefined;\n const nodeEnv =\n typeof process !== \"undefined\" ? process.env?.NODE_ENV : undefined;\n\n this.level = parseLogLevel(logLevelEnv);\n this.service = serviceNameEnv ?? \"noego\";\n this.environment = nodeEnv ?? \"development\";\n }\n\n getLevel(): LogLevelValue {\n return this.level;\n }\n\n setLevel(level: LogLevelInput): void {\n this.level = parseLogLevel(level);\n }\n\n setLoggerLevel(name: string, level: LogLevelInput): void {\n this.loggerLevels.set(name, parseLogLevel(level));\n }\n\n shouldLog(level: LogLevelInput, loggerName?: string): boolean {\n const parsedLevel = parseLogLevel(level);\n\n if (loggerName) {\n const loggerLevel = this.loggerLevels.get(loggerName);\n if (loggerLevel !== undefined) {\n return parsedLevel >= loggerLevel;\n }\n }\n return parsedLevel >= this.level;\n }\n\n addTransport(transport: LogTransport): void {\n this.transports.push(transport);\n }\n\n setTransports(transports: LogTransport[]): void {\n this.transports = [...transports];\n }\n\n clearTransports(): void {\n this.transports = [];\n }\n\n setServiceName(name: string): void {\n this.service = name;\n }\n\n log(entry: Omit<LogEntry, \"environment\" | \"service\">): void {\n const fullEntry: LogEntry = {\n ...entry,\n environment: this.environment,\n service: this.service,\n };\n\n for (const transport of this.transports) {\n transport.log(fullEntry);\n }\n }\n\n async closeAll(): Promise<void> {\n for (const transport of this.transports) {\n if (transport.close) {\n await transport.close();\n }\n }\n }\n\n formatMessage(level: LogLevelInput, name: string, message: string): string {\n const timestamp = new Date().toISOString();\n return `[${timestamp}] [${name}] [${logLevelName(level)}] ${message}`;\n }\n}\n\n/**\n * Gets the global LoggingManager singleton instance.\n * Creates one with a default ConsoleTransport if it doesn't exist.\n */\nexport function getManager(): LoggingManager {\n const global = globalThis as GlobalWithManager;\n\n if (!global[MANAGER_SYMBOL]) {\n const manager = new LoggingManager();\n\n // Add default ConsoleTransport\n manager.addTransport(new ConsoleTransport());\n\n global[MANAGER_SYMBOL] = manager;\n }\n\n return global[MANAGER_SYMBOL];\n}\n\n/**\n * Configures the global LoggingManager instance.\n * This mutates the singleton instance returned by getManager().\n */\nexport function configureLogging(options: ConfigureLoggingOptions): void {\n const manager = getManager();\n\n if (options.levels) {\n registerLogLevels(options.levels);\n }\n\n if (options.level !== undefined) {\n manager.setLevel(options.level);\n }\n\n if (options.loggers) {\n for (const [name, level] of Object.entries(options.loggers)) {\n manager.setLoggerLevel(name, level);\n }\n }\n\n if (options.transports) {\n // Clear existing transports and add new ones\n manager.setTransports(options.transports);\n }\n\n if (options.serviceName) {\n // Update service name\n manager.setServiceName(options.serviceName);\n }\n}\n\n/**\n * Shuts down the global LoggingManager by closing all transports.\n */\nexport async function shutdown(): Promise<void> {\n const manager = getManager();\n await manager.closeAll();\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LogLevelInput, LogLevelDefinition, LogLevelValue } from './log_level.cjs';
|
|
2
2
|
import { LogTransport, LogEntry } from './log_transport.cjs';
|
|
3
3
|
|
|
4
4
|
interface ConfigureLoggingOptions {
|
|
5
|
-
level?:
|
|
6
|
-
loggers?: Record<string,
|
|
5
|
+
level?: LogLevelInput;
|
|
6
|
+
loggers?: Record<string, LogLevelInput>;
|
|
7
|
+
levels?: LogLevelDefinition[];
|
|
7
8
|
transports?: LogTransport[];
|
|
8
9
|
serviceName?: string;
|
|
9
10
|
}
|
|
@@ -14,17 +15,17 @@ declare class LoggingManager {
|
|
|
14
15
|
private readonly environment;
|
|
15
16
|
private loggerLevels;
|
|
16
17
|
constructor();
|
|
17
|
-
getLevel():
|
|
18
|
-
setLevel(level:
|
|
19
|
-
setLoggerLevel(name: string, level:
|
|
20
|
-
shouldLog(level:
|
|
18
|
+
getLevel(): LogLevelValue;
|
|
19
|
+
setLevel(level: LogLevelInput): void;
|
|
20
|
+
setLoggerLevel(name: string, level: LogLevelInput): void;
|
|
21
|
+
shouldLog(level: LogLevelInput, loggerName?: string): boolean;
|
|
21
22
|
addTransport(transport: LogTransport): void;
|
|
22
23
|
setTransports(transports: LogTransport[]): void;
|
|
23
24
|
clearTransports(): void;
|
|
24
25
|
setServiceName(name: string): void;
|
|
25
26
|
log(entry: Omit<LogEntry, "environment" | "service">): void;
|
|
26
27
|
closeAll(): Promise<void>;
|
|
27
|
-
formatMessage(level:
|
|
28
|
+
formatMessage(level: LogLevelInput, name: string, message: string): string;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
31
|
* Gets the global LoggingManager singleton instance.
|