@agimon-ai/foundation-file-logger 0.5.3 → 0.5.5
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installConsoleFileLogger.cjs","names":["FileTransport"],"sources":["../src/installConsoleFileLogger.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport type { LogContext, LogLevel, UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileTransportOptions } from './types';\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error' | 'debug' | 'trace';\n\ntype ConsoleFileLoggerState = {\n isForwarding: boolean;\n logger?: UniversalLogger;\n originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>>;\n};\n\nconst STATE_KEY = '__agimon_console_file_logger_state__';\n\nexport type InstallConsoleFileLoggerOptions = {\n readonly service: string;\n readonly level?: LogLevel;\n readonly context?: LogContext;\n readonly logDir?: string;\n readonly fileName?: string;\n readonly file?: Omit<FileTransportOptions, 'path'> & { readonly path?: string };\n};\n\nfunction getState(): ConsoleFileLoggerState {\n const globalStore = globalThis as typeof globalThis & {\n [STATE_KEY]?: ConsoleFileLoggerState;\n };\n\n if (!globalStore[STATE_KEY]) {\n globalStore[STATE_KEY] = {\n isForwarding: false,\n originals: {},\n };\n }\n\n return globalStore[STATE_KEY];\n}\n\nfunction resolveFilePath(options: InstallConsoleFileLoggerOptions): string {\n if (options.file?.path) {\n return options.file.path;\n }\n\n const directory = options.logDir || process.env.AGIMON_LOG_DIR || join(process.cwd(), '.logs');\n const fileName = options.fileName || `${options.service}.log`;\n\n return join(directory, fileName);\n}\n\nfunction normalizeConsoleArgs(method: ConsoleMethod, args: unknown[]): { message: string; rest: unknown[] } {\n if (args.length === 0) {\n return { message: `console.${method}`, rest: [] };\n }\n\n if (typeof args[0] === 'string') {\n return { message: args[0], rest: args.slice(1) };\n }\n\n if (args[0] instanceof Error) {\n return { message: args[0].message, rest: args };\n }\n\n return { message: `console.${method}`, rest: args };\n}\n\nfunction forwardToFileLogger(logger: UniversalLogger, method: ConsoleMethod, args: unknown[]): void {\n const { message, rest } = normalizeConsoleArgs(method, args);\n\n switch (method) {\n case 'log':\n case 'info':\n logger.info(message, ...rest);\n break;\n case 'warn':\n logger.warn(message, ...rest);\n break;\n case 'debug':\n logger.debug(message, ...rest);\n break;\n case 'trace':\n logger.trace(message, ...rest);\n break;\n case 'error': {\n const [maybeError, ...others] = rest;\n if (maybeError instanceof Error) {\n logger.error(message, maybeError, ...others);\n } else {\n logger.error(message, undefined, ...rest);\n }\n break;\n }\n }\n}\n\nexport function installConsoleFileLogger(options: InstallConsoleFileLoggerOptions): UniversalLogger {\n const state = getState();\n if (state.logger) {\n return state.logger;\n }\n\n const filePath = resolveFilePath(options);\n const fileTransport = new FileTransport({\n path: filePath,\n append: options.file?.append,\n ensureDir: options.file?.ensureDir,\n level: options.file?.level,\n formatter: options.file?.formatter,\n });\n\n const logger = createUniversalLogger({\n service: options.service,\n level: options.level || 'info',\n context: options.context,\n transports: [fileTransport],\n });\n\n const methods: ConsoleMethod[] = ['log', 'info', 'warn', 'error', 'debug', 'trace'];\n for (const method of methods) {\n const original = console[method].bind(console);\n state.originals[method] = original;\n\n (console as Console)[method] = (...args: unknown[]) => {\n original(...args);\n\n if (state.isForwarding) {\n return;\n }\n\n state.isForwarding = true;\n try {\n forwardToFileLogger(logger, method, args);\n } finally {\n state.isForwarding = false;\n }\n };\n }\n\n state.logger = logger;\n return logger;\n}\n"],"mappings":"2LAcA,MAAM,EAAY,uCAWlB,SAAS,GAAmC,CAC1C,IAAM,EAAc,WAWpB,OAPK,EAAY,KACf,EAAY,GAAa,CACvB,aAAc,GACd,UAAW,EAAE,CACd,EAGI,EAAY,GAGrB,SAAS,EAAgB,EAAkD,CAQzE,OAPI,EAAQ,MAAM,KACT,EAAQ,KAAK,MAMtB,EAAA,EAAA,MAHkB,EAAQ,QAAU,QAAQ,IAAI,iBAAA,EAAA,EAAA,MAAuB,QAAQ,KAAK,CAAE,QAAQ,CAC7E,EAAQ,UAAY,GAAG,EAAQ,QAAQ,MAExB,CAGlC,SAAS,EAAqB,EAAuB,EAAuD,CAa1G,OAZI,EAAK,SAAW,EACX,CAAE,QAAS,WAAW,IAAU,KAAM,EAAE,CAAE,CAG/C,OAAO,EAAK,IAAO,SACd,CAAE,QAAS,EAAK,GAAI,KAAM,EAAK,MAAM,EAAE,CAAE,CAG9C,EAAK,aAAc,MACd,CAAE,QAAS,EAAK,GAAG,QAAS,KAAM,EAAM,CAG1C,CAAE,QAAS,WAAW,IAAU,KAAM,EAAM,CAGrD,SAAS,EAAoB,EAAyB,EAAuB,EAAuB,CAClG,GAAM,CAAE,UAAS,QAAS,EAAqB,EAAQ,EAAK,CAE5D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QAAS,CACZ,GAAM,CAAC,EAAY,GAAG,GAAU,EAC5B,aAAsB,MACxB,EAAO,MAAM,EAAS,EAAY,GAAG,EAAO,CAE5C,EAAO,MAAM,EAAS,IAAA,GAAW,GAAG,EAAK,CAE3C,QAKN,SAAgB,EAAyB,EAA2D,CAClG,IAAM,EAAQ,GAAU,CACxB,GAAI,EAAM,OACR,OAAO,EAAM,OAIf,IAAM,EAAgB,IAAIA,EAAAA,cAAc,CACtC,KAFe,EAAgB,
|
|
1
|
+
{"version":3,"file":"installConsoleFileLogger.cjs","names":["FileTransport"],"sources":["../src/installConsoleFileLogger.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport type { LogContext, LogLevel, UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileTransportOptions } from './types';\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error' | 'debug' | 'trace';\n\ntype ConsoleFileLoggerState = {\n isForwarding: boolean;\n logger?: UniversalLogger;\n originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>>;\n};\n\nconst STATE_KEY = '__agimon_console_file_logger_state__';\n\nexport type InstallConsoleFileLoggerOptions = {\n readonly service: string;\n readonly level?: LogLevel;\n readonly context?: LogContext;\n readonly logDir?: string;\n readonly fileName?: string;\n readonly file?: Omit<FileTransportOptions, 'path'> & { readonly path?: string };\n};\n\nfunction getState(): ConsoleFileLoggerState {\n const globalStore = globalThis as typeof globalThis & {\n [STATE_KEY]?: ConsoleFileLoggerState;\n };\n\n if (!globalStore[STATE_KEY]) {\n globalStore[STATE_KEY] = {\n isForwarding: false,\n originals: {},\n };\n }\n\n return globalStore[STATE_KEY];\n}\n\nfunction resolveFilePath(options: InstallConsoleFileLoggerOptions): string {\n if (options.file?.path) {\n return options.file.path;\n }\n\n const directory = options.logDir || process.env.AGIMON_LOG_DIR || join(process.cwd(), '.logs');\n const fileName = options.fileName || `${options.service}.log`;\n\n return join(directory, fileName);\n}\n\nfunction normalizeConsoleArgs(method: ConsoleMethod, args: unknown[]): { message: string; rest: unknown[] } {\n if (args.length === 0) {\n return { message: `console.${method}`, rest: [] };\n }\n\n if (typeof args[0] === 'string') {\n return { message: args[0], rest: args.slice(1) };\n }\n\n if (args[0] instanceof Error) {\n return { message: args[0].message, rest: args };\n }\n\n return { message: `console.${method}`, rest: args };\n}\n\nfunction forwardToFileLogger(logger: UniversalLogger, method: ConsoleMethod, args: unknown[]): void {\n const { message, rest } = normalizeConsoleArgs(method, args);\n\n switch (method) {\n case 'log':\n case 'info':\n logger.info(message, ...rest);\n break;\n case 'warn':\n logger.warn(message, ...rest);\n break;\n case 'debug':\n logger.debug(message, ...rest);\n break;\n case 'trace':\n logger.trace(message, ...rest);\n break;\n case 'error': {\n const [maybeError, ...others] = rest;\n if (maybeError instanceof Error) {\n logger.error(message, maybeError, ...others);\n } else {\n logger.error(message, undefined, ...rest);\n }\n break;\n }\n }\n}\n\nexport function installConsoleFileLogger(options: InstallConsoleFileLoggerOptions): UniversalLogger {\n const state = getState();\n if (state.logger) {\n return state.logger;\n }\n\n const filePath = resolveFilePath(options);\n const fileTransport = new FileTransport({\n path: filePath,\n append: options.file?.append,\n ensureDir: options.file?.ensureDir,\n level: options.file?.level,\n formatter: options.file?.formatter,\n });\n\n const logger = createUniversalLogger({\n service: options.service,\n level: options.level || 'info',\n context: options.context,\n transports: [fileTransport],\n });\n\n const methods: ConsoleMethod[] = ['log', 'info', 'warn', 'error', 'debug', 'trace'];\n for (const method of methods) {\n const original = console[method].bind(console);\n state.originals[method] = original;\n\n (console as Console)[method] = (...args: unknown[]) => {\n original(...args);\n\n if (state.isForwarding) {\n return;\n }\n\n state.isForwarding = true;\n try {\n forwardToFileLogger(logger, method, args);\n } finally {\n state.isForwarding = false;\n }\n };\n }\n\n state.logger = logger;\n return logger;\n}\n"],"mappings":"2LAcA,MAAM,EAAY,uCAWlB,SAAS,GAAmC,CAC1C,IAAM,EAAc,WAWpB,OAPK,EAAY,KACf,EAAY,GAAa,CACvB,aAAc,GACd,UAAW,EAAE,CACd,EAGI,EAAY,GAGrB,SAAS,EAAgB,EAAkD,CAQzE,OAPI,EAAQ,MAAM,KACT,EAAQ,KAAK,MAMtB,EAAA,EAAA,MAHkB,EAAQ,QAAU,QAAQ,IAAI,iBAAA,EAAA,EAAA,MAAuB,QAAQ,KAAK,CAAE,QAAQ,CAC7E,EAAQ,UAAY,GAAG,EAAQ,QAAQ,MAExB,CAGlC,SAAS,EAAqB,EAAuB,EAAuD,CAa1G,OAZI,EAAK,SAAW,EACX,CAAE,QAAS,WAAW,IAAU,KAAM,EAAE,CAAE,CAG/C,OAAO,EAAK,IAAO,SACd,CAAE,QAAS,EAAK,GAAI,KAAM,EAAK,MAAM,EAAE,CAAE,CAG9C,EAAK,aAAc,MACd,CAAE,QAAS,EAAK,GAAG,QAAS,KAAM,EAAM,CAG1C,CAAE,QAAS,WAAW,IAAU,KAAM,EAAM,CAGrD,SAAS,EAAoB,EAAyB,EAAuB,EAAuB,CAClG,GAAM,CAAE,UAAS,QAAS,EAAqB,EAAQ,EAAK,CAE5D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QAAS,CACZ,GAAM,CAAC,EAAY,GAAG,GAAU,EAC5B,aAAsB,MACxB,EAAO,MAAM,EAAS,EAAY,GAAG,EAAO,CAE5C,EAAO,MAAM,EAAS,IAAA,GAAW,GAAG,EAAK,CAE3C,QAKN,SAAgB,EAAyB,EAA2D,CAClG,IAAM,EAAQ,GAAU,CACxB,GAAI,EAAM,OACR,OAAO,EAAM,OAIf,IAAM,EAAgB,IAAIA,EAAAA,cAAc,CACtC,KAFe,EAAgB,EAEjB,CACd,OAAQ,EAAQ,MAAM,OACtB,UAAW,EAAQ,MAAM,UACzB,MAAO,EAAQ,MAAM,MACrB,UAAW,EAAQ,MAAM,UAC1B,CAAC,CAEI,GAAA,EAAA,EAAA,cAA+B,CACnC,QAAS,EAAQ,QACjB,MAAO,EAAQ,OAAS,OACxB,QAAS,EAAQ,QACjB,WAAY,CAAC,EAAc,CAC5B,CAAC,CAGF,IAAK,IAAM,IAAU,CADa,MAAO,OAAQ,OAAQ,QAAS,QAAS,QAC/C,CAAE,CAC5B,IAAM,EAAW,QAAQ,GAAQ,KAAK,QAAQ,CAC9C,EAAM,UAAU,GAAU,EAEzB,QAAoB,IAAW,GAAG,IAAoB,CACrD,KAAS,GAAG,EAAK,CAEb,GAAM,aAIV,GAAM,aAAe,GACrB,GAAI,CACF,EAAoB,EAAQ,EAAQ,EAAK,QACjC,CACR,EAAM,aAAe,MAM3B,MADA,GAAM,OAAS,EACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installConsoleFileLogger.mjs","names":["createUniversalLogger"],"sources":["../src/installConsoleFileLogger.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport type { LogContext, LogLevel, UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileTransportOptions } from './types';\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error' | 'debug' | 'trace';\n\ntype ConsoleFileLoggerState = {\n isForwarding: boolean;\n logger?: UniversalLogger;\n originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>>;\n};\n\nconst STATE_KEY = '__agimon_console_file_logger_state__';\n\nexport type InstallConsoleFileLoggerOptions = {\n readonly service: string;\n readonly level?: LogLevel;\n readonly context?: LogContext;\n readonly logDir?: string;\n readonly fileName?: string;\n readonly file?: Omit<FileTransportOptions, 'path'> & { readonly path?: string };\n};\n\nfunction getState(): ConsoleFileLoggerState {\n const globalStore = globalThis as typeof globalThis & {\n [STATE_KEY]?: ConsoleFileLoggerState;\n };\n\n if (!globalStore[STATE_KEY]) {\n globalStore[STATE_KEY] = {\n isForwarding: false,\n originals: {},\n };\n }\n\n return globalStore[STATE_KEY];\n}\n\nfunction resolveFilePath(options: InstallConsoleFileLoggerOptions): string {\n if (options.file?.path) {\n return options.file.path;\n }\n\n const directory = options.logDir || process.env.AGIMON_LOG_DIR || join(process.cwd(), '.logs');\n const fileName = options.fileName || `${options.service}.log`;\n\n return join(directory, fileName);\n}\n\nfunction normalizeConsoleArgs(method: ConsoleMethod, args: unknown[]): { message: string; rest: unknown[] } {\n if (args.length === 0) {\n return { message: `console.${method}`, rest: [] };\n }\n\n if (typeof args[0] === 'string') {\n return { message: args[0], rest: args.slice(1) };\n }\n\n if (args[0] instanceof Error) {\n return { message: args[0].message, rest: args };\n }\n\n return { message: `console.${method}`, rest: args };\n}\n\nfunction forwardToFileLogger(logger: UniversalLogger, method: ConsoleMethod, args: unknown[]): void {\n const { message, rest } = normalizeConsoleArgs(method, args);\n\n switch (method) {\n case 'log':\n case 'info':\n logger.info(message, ...rest);\n break;\n case 'warn':\n logger.warn(message, ...rest);\n break;\n case 'debug':\n logger.debug(message, ...rest);\n break;\n case 'trace':\n logger.trace(message, ...rest);\n break;\n case 'error': {\n const [maybeError, ...others] = rest;\n if (maybeError instanceof Error) {\n logger.error(message, maybeError, ...others);\n } else {\n logger.error(message, undefined, ...rest);\n }\n break;\n }\n }\n}\n\nexport function installConsoleFileLogger(options: InstallConsoleFileLoggerOptions): UniversalLogger {\n const state = getState();\n if (state.logger) {\n return state.logger;\n }\n\n const filePath = resolveFilePath(options);\n const fileTransport = new FileTransport({\n path: filePath,\n append: options.file?.append,\n ensureDir: options.file?.ensureDir,\n level: options.file?.level,\n formatter: options.file?.formatter,\n });\n\n const logger = createUniversalLogger({\n service: options.service,\n level: options.level || 'info',\n context: options.context,\n transports: [fileTransport],\n });\n\n const methods: ConsoleMethod[] = ['log', 'info', 'warn', 'error', 'debug', 'trace'];\n for (const method of methods) {\n const original = console[method].bind(console);\n state.originals[method] = original;\n\n (console as Console)[method] = (...args: unknown[]) => {\n original(...args);\n\n if (state.isForwarding) {\n return;\n }\n\n state.isForwarding = true;\n try {\n forwardToFileLogger(logger, method, args);\n } finally {\n state.isForwarding = false;\n }\n };\n }\n\n state.logger = logger;\n return logger;\n}\n"],"mappings":"6JAcA,MAAM,EAAY,uCAWlB,SAAS,GAAmC,CAC1C,IAAM,EAAc,WAWpB,OAPK,EAAY,KACf,EAAY,GAAa,CACvB,aAAc,GACd,UAAW,EAAE,CACd,EAGI,EAAY,GAGrB,SAAS,EAAgB,EAAkD,CAQzE,OAPI,EAAQ,MAAM,KACT,EAAQ,KAAK,KAMf,EAHW,EAAQ,QAAU,QAAQ,IAAI,gBAAkB,EAAK,QAAQ,KAAK,CAAE,QAAQ,CAC7E,EAAQ,UAAY,GAAG,EAAQ,QAAQ,MAExB,CAGlC,SAAS,EAAqB,EAAuB,EAAuD,CAa1G,OAZI,EAAK,SAAW,EACX,CAAE,QAAS,WAAW,IAAU,KAAM,EAAE,CAAE,CAG/C,OAAO,EAAK,IAAO,SACd,CAAE,QAAS,EAAK,GAAI,KAAM,EAAK,MAAM,EAAE,CAAE,CAG9C,EAAK,aAAc,MACd,CAAE,QAAS,EAAK,GAAG,QAAS,KAAM,EAAM,CAG1C,CAAE,QAAS,WAAW,IAAU,KAAM,EAAM,CAGrD,SAAS,EAAoB,EAAyB,EAAuB,EAAuB,CAClG,GAAM,CAAE,UAAS,QAAS,EAAqB,EAAQ,EAAK,CAE5D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QAAS,CACZ,GAAM,CAAC,EAAY,GAAG,GAAU,EAC5B,aAAsB,MACxB,EAAO,MAAM,EAAS,EAAY,GAAG,EAAO,CAE5C,EAAO,MAAM,EAAS,IAAA,GAAW,GAAG,EAAK,CAE3C,QAKN,SAAgB,EAAyB,EAA2D,CAClG,IAAM,EAAQ,GAAU,CACxB,GAAI,EAAM,OACR,OAAO,EAAM,OAIf,IAAM,EAAgB,IAAI,EAAc,CACtC,KAFe,EAAgB,
|
|
1
|
+
{"version":3,"file":"installConsoleFileLogger.mjs","names":["createUniversalLogger"],"sources":["../src/installConsoleFileLogger.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport type { LogContext, LogLevel, UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileTransportOptions } from './types';\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error' | 'debug' | 'trace';\n\ntype ConsoleFileLoggerState = {\n isForwarding: boolean;\n logger?: UniversalLogger;\n originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>>;\n};\n\nconst STATE_KEY = '__agimon_console_file_logger_state__';\n\nexport type InstallConsoleFileLoggerOptions = {\n readonly service: string;\n readonly level?: LogLevel;\n readonly context?: LogContext;\n readonly logDir?: string;\n readonly fileName?: string;\n readonly file?: Omit<FileTransportOptions, 'path'> & { readonly path?: string };\n};\n\nfunction getState(): ConsoleFileLoggerState {\n const globalStore = globalThis as typeof globalThis & {\n [STATE_KEY]?: ConsoleFileLoggerState;\n };\n\n if (!globalStore[STATE_KEY]) {\n globalStore[STATE_KEY] = {\n isForwarding: false,\n originals: {},\n };\n }\n\n return globalStore[STATE_KEY];\n}\n\nfunction resolveFilePath(options: InstallConsoleFileLoggerOptions): string {\n if (options.file?.path) {\n return options.file.path;\n }\n\n const directory = options.logDir || process.env.AGIMON_LOG_DIR || join(process.cwd(), '.logs');\n const fileName = options.fileName || `${options.service}.log`;\n\n return join(directory, fileName);\n}\n\nfunction normalizeConsoleArgs(method: ConsoleMethod, args: unknown[]): { message: string; rest: unknown[] } {\n if (args.length === 0) {\n return { message: `console.${method}`, rest: [] };\n }\n\n if (typeof args[0] === 'string') {\n return { message: args[0], rest: args.slice(1) };\n }\n\n if (args[0] instanceof Error) {\n return { message: args[0].message, rest: args };\n }\n\n return { message: `console.${method}`, rest: args };\n}\n\nfunction forwardToFileLogger(logger: UniversalLogger, method: ConsoleMethod, args: unknown[]): void {\n const { message, rest } = normalizeConsoleArgs(method, args);\n\n switch (method) {\n case 'log':\n case 'info':\n logger.info(message, ...rest);\n break;\n case 'warn':\n logger.warn(message, ...rest);\n break;\n case 'debug':\n logger.debug(message, ...rest);\n break;\n case 'trace':\n logger.trace(message, ...rest);\n break;\n case 'error': {\n const [maybeError, ...others] = rest;\n if (maybeError instanceof Error) {\n logger.error(message, maybeError, ...others);\n } else {\n logger.error(message, undefined, ...rest);\n }\n break;\n }\n }\n}\n\nexport function installConsoleFileLogger(options: InstallConsoleFileLoggerOptions): UniversalLogger {\n const state = getState();\n if (state.logger) {\n return state.logger;\n }\n\n const filePath = resolveFilePath(options);\n const fileTransport = new FileTransport({\n path: filePath,\n append: options.file?.append,\n ensureDir: options.file?.ensureDir,\n level: options.file?.level,\n formatter: options.file?.formatter,\n });\n\n const logger = createUniversalLogger({\n service: options.service,\n level: options.level || 'info',\n context: options.context,\n transports: [fileTransport],\n });\n\n const methods: ConsoleMethod[] = ['log', 'info', 'warn', 'error', 'debug', 'trace'];\n for (const method of methods) {\n const original = console[method].bind(console);\n state.originals[method] = original;\n\n (console as Console)[method] = (...args: unknown[]) => {\n original(...args);\n\n if (state.isForwarding) {\n return;\n }\n\n state.isForwarding = true;\n try {\n forwardToFileLogger(logger, method, args);\n } finally {\n state.isForwarding = false;\n }\n };\n }\n\n state.logger = logger;\n return logger;\n}\n"],"mappings":"6JAcA,MAAM,EAAY,uCAWlB,SAAS,GAAmC,CAC1C,IAAM,EAAc,WAWpB,OAPK,EAAY,KACf,EAAY,GAAa,CACvB,aAAc,GACd,UAAW,EAAE,CACd,EAGI,EAAY,GAGrB,SAAS,EAAgB,EAAkD,CAQzE,OAPI,EAAQ,MAAM,KACT,EAAQ,KAAK,KAMf,EAHW,EAAQ,QAAU,QAAQ,IAAI,gBAAkB,EAAK,QAAQ,KAAK,CAAE,QAAQ,CAC7E,EAAQ,UAAY,GAAG,EAAQ,QAAQ,MAExB,CAGlC,SAAS,EAAqB,EAAuB,EAAuD,CAa1G,OAZI,EAAK,SAAW,EACX,CAAE,QAAS,WAAW,IAAU,KAAM,EAAE,CAAE,CAG/C,OAAO,EAAK,IAAO,SACd,CAAE,QAAS,EAAK,GAAI,KAAM,EAAK,MAAM,EAAE,CAAE,CAG9C,EAAK,aAAc,MACd,CAAE,QAAS,EAAK,GAAG,QAAS,KAAM,EAAM,CAG1C,CAAE,QAAS,WAAW,IAAU,KAAM,EAAM,CAGrD,SAAS,EAAoB,EAAyB,EAAuB,EAAuB,CAClG,GAAM,CAAE,UAAS,QAAS,EAAqB,EAAQ,EAAK,CAE5D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QAAS,CACZ,GAAM,CAAC,EAAY,GAAG,GAAU,EAC5B,aAAsB,MACxB,EAAO,MAAM,EAAS,EAAY,GAAG,EAAO,CAE5C,EAAO,MAAM,EAAS,IAAA,GAAW,GAAG,EAAK,CAE3C,QAKN,SAAgB,EAAyB,EAA2D,CAClG,IAAM,EAAQ,GAAU,CACxB,GAAI,EAAM,OACR,OAAO,EAAM,OAIf,IAAM,EAAgB,IAAI,EAAc,CACtC,KAFe,EAAgB,EAEjB,CACd,OAAQ,EAAQ,MAAM,OACtB,UAAW,EAAQ,MAAM,UACzB,MAAO,EAAQ,MAAM,MACrB,UAAW,EAAQ,MAAM,UAC1B,CAAC,CAEI,EAASA,EAAsB,CACnC,QAAS,EAAQ,QACjB,MAAO,EAAQ,OAAS,OACxB,QAAS,EAAQ,QACjB,WAAY,CAAC,EAAc,CAC5B,CAAC,CAGF,IAAK,IAAM,IAAU,CADa,MAAO,OAAQ,OAAQ,QAAS,QAAS,QAC/C,CAAE,CAC5B,IAAM,EAAW,QAAQ,GAAQ,KAAK,QAAQ,CAC9C,EAAM,UAAU,GAAU,EAEzB,QAAoB,IAAW,GAAG,IAAoB,CACrD,KAAS,GAAG,EAAK,CAEb,GAAM,aAIV,GAAM,aAAe,GACrB,GAAI,CACF,EAAoB,EAAQ,EAAQ,EAAK,QACjC,CACR,EAAM,aAAe,MAM3B,MADA,GAAM,OAAS,EACR"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/foundation-file-logger",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.5",
|
|
4
4
|
"description": "Node-oriented logger that outputs to both console and file",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
"access": "public"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@agimon-ai/foundation-universal-logger": "0.5.
|
|
13
|
+
"@agimon-ai/foundation-universal-logger": "0.5.5"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@types/node": "25.6.0",
|
|
17
|
-
"tsdown": "0.21.
|
|
18
|
-
"typescript": "6.0.
|
|
19
|
-
"vitest": "4.1.
|
|
17
|
+
"tsdown": "0.21.10",
|
|
18
|
+
"typescript": "6.0.3",
|
|
19
|
+
"vitest": "4.1.5"
|
|
20
20
|
},
|
|
21
21
|
"author": "Vuong Ngo",
|
|
22
22
|
"license": "BUSL-1.1",
|