Core Types
Log Levels
Section titled “Log Levels”LevelName & LevelNumber
Section titled “LevelName & LevelNumber”type LevelName<Levels extends Record<string, number>> = keyof Levels & stringtype LevelNumber<Levels extends Record<string, number>> = Levels[LevelName<Levels>]
- LevelName: Union of string keys in
Levels
map. - LevelNumber: Numeric value type associated with a
LevelName
inLevels
.
DEFAULT_LEVELS
Section titled “DEFAULT_LEVELS”Default built-in levels and priorities:
type DEFAULT_LEVELS = { TRACE: 10 DEBUG: 20 INFO: 30 WARN: 40 ERROR: 50 FATAL: 60}
STD_LEVEL_DEF
Section titled “STD_LEVEL_DEF”Standard level definition object with utilities:
const STD_LEVEL_DEF: LevelDefinition<{ readonly TRACE: 10 readonly DEBUG: 20 readonly INFO: 30 readonly WARN: 40 readonly ERROR: 50 readonly FATAL: 60}>
- levels: Raw mapping of names → numbers.
- getLevelName(number): Reverse lookup name by priority; throws if absent.
- getLevelNumber(name): Lookup numeric priority by name; throws if absent.
- hasLevel(number): Check if number is defined in map.
Core Log Types
Section titled “Core Log Types”LogMeta
Section titled “LogMeta”type LogMeta = Record<string, unknown>
- Arbitrary key/value metadata attached to logs.
interface Log<Levels extends Record<string, number> = DEFAULT_LEVELS> extends Record<string, unknown> { msg: string level: LevelNumber<Levels> time: number meta?: LogMeta | Error}
- msg: Resolved message string.
- level: Numeric severity (matching
Levels
). - time: Timestamp in milliseconds since epoch.
- meta (optional): Additional metadata or an
Error
object. - extends Record: Allows extra custom fields per log entry.
Logger Interfaces
Section titled “Logger Interfaces”ILogger
Section titled “ILogger”Core methods for emitting, scoping, and managing logs.
interface ILogger<Meta extends LogMeta, Levels>
Methods
Section titled “Methods”-
log(level, msg, meta?): Emit a log.
- level:
LevelName
orLevelNumber
. - msg: Message string, metadata object, or
Error
. - meta (optional): Extra metadata or
Error
.
- level:
-
withMeta
() : Compile-time refine logger to expect additional metadata properties. -
child(context): Static context merged into every log’s metadata.
-
withCategory(category): Shorthand for
child({ category })
. -
flush(): Flush buffered logs; Not recommended in production. Can be used when you need to ensure flush is initiated at certain condition. e.g. debugging
-
close(): Clean shutdown (flush, terminate workers, release resources); returns a
Promise
.
Logger (Typed)
Section titled “Logger (Typed)”type Logger<Meta, Levels> = ILogger<Meta, Levels> & { [K in keyof Levels as Lowercase<K>]: ((meta: Meta | Error) => void) & ((msg: string, meta?: Meta | Error) => void)}
-
Convenience methods for each level, e.g.,
.info()
,.error()
,.debug()
. -
Overloads:
(meta: Meta | Error) => void
(msg: string, meta?: Meta | Error) => void
In-process queue for parallel async jobs.
class AsyncJobQueue { constructor(concurrency?: number) get length(): number enqueue(job: () => Promise<void>): void drain(): Promise<void>}
- concurrency: Max parallel jobs (minimum 1).
- length: Jobs waiting in queue.
- enqueue: Add job fn returning a
Promise
; triggers execution. - drain: Wait until queue and in-flight jobs complete.
Logger Creation & Globals
Section titled “Logger Creation & Globals”CreateLoggerOptions
Section titled “CreateLoggerOptions”Configuration for root logger and its transports.
interface CreateLoggerOptions<Levels> { logLevel?: number levels?: Levels runAsWorker?: boolean consoleTransport?: ConsoleTransportOptions<Levels> fileTransport?: FileTransportOptions<Levels> | FileTransportOptions<Levels>[] httpTransport?: HttpTransportOptions<Levels> | HttpTransportOptions<Levels>[] transport?: Transport<Levels> | Transport<Levels>[] context?: LogMeta filter?: (log: Log<Levels>) => boolean transformer?: (log: Log<Levels>) => Log<Levels> | null errors?: ErrorSerialization onError?: (err: TransportError<Levels>) => void resolveMessage?: (meta: LogMeta | Error) => string}
createLogger()
Section titled “createLogger()”function createLogger<Levels>( options?: CreateLoggerOptions<Levels>): Promise<Logger<LogMeta, Levels>>
- Initializes transports, applies settings, and returns ready-to-use
Logger
.
hasLogger()
Section titled “hasLogger()”function hasLogger(): boolean
- Returns
true
if a global logger exists.
getLogger()
Section titled “getLogger()”function getLogger<Meta, Levels>(category?: string): Logger<Meta, Levels>
- Retrieves the global logger, or a category-scoped child.
- Throws if none initialized.
setLogger()
Section titled “setLogger()”function setLogger<Meta, Levels>( logger: Logger<Meta, Levels> | ILogger<Meta, Levels>, force?: boolean): void
- Installs or replaces the global logger.
force = false
(default) prevents override if exists.
disableLogger()
Section titled “disableLogger()”function disableLogger<Meta, Levels>(force?: boolean): void
- Installs a no-op proxy logger; all methods become harmless no-ops.
force
controls override semantics.
version
Section titled “version”const version: string
- Library version string, e.g.
'1.0.0'
.