Skip to content

API 参考 ​

本包被组织为多个职责单一的模块,既可以从根入口导入,也可以通过 子路径导出 按需引入(有利于 tree-shaking——打包工具会自动移除未使用的代码):

导入导出内容
lograil全部:logger、createLogger、类型、所有子模块
lograil/coreLogger、Pipeline、级别工具
lograil/pipelineFilter、Processor、Formatter、内置过滤器/处理器
lograil/transportTransport、ConsoleTransport、FileTransport、ElectronIpcTransport、OtlpTransport
lograil/runtime运行时适配器、detectRuntime、registerIpcReceiver
lograil/pluginPlugin、PluginManager、PluginContext
lograil/contextContextStore、createContextStore、runWithContext、asyncContext、isEmptyRecord

核心类型 ​

ts
type LogLevelName = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';

interface LogEntry {
  level: number;
  levelName: LogLevelName;
  message: string;
  args: unknown[];
  timestamp: number; // 毫秒时间戳
  time: string; // ISO 时间戳
  scope?: string;
  pid?: number;
  context: Record<string, unknown>;
  metadata: Record<string, unknown>;
  error?: Error;
}

type LogFn = (message: unknown, ...args: unknown[]) => void;

常量与工具函数 ​

以下均从根导入 lograil 中再次导出。

ts
const LOG_LEVELS: Record<LogLevelName, number>;   // { trace: 10, ..., fatal: 60 }
const LOG_LEVEL_NAMES: LogLevelName[];            // ['trace', 'debug', ..., 'fatal']

function normalizeLevel(input: LogLevelInput): number;
function isLogLevelName(value: unknown): value is LogLevelName;
function isLevelEnabled(configured: LogLevelInput, candidate: LogLevelInput): boolean;
function levelNameFromValue(value: number): LogLevelName;
function compareLevel(a: LogLevelInput, b: LogLevelInput): number; // <0 | 0 | >0

// 自定义级别——在内置级别之外注册一个命名级别(例如 `audit` 定为 45)。
// 注册后,该名称在 setLevel / getLevel / LOG_LEVEL 环境变量 / 各传输器的
// level / 级别命令中都成为一等公民。
function registerLevel(name: string, value: number): number;
function unregisterLevel(name: string): boolean;  // 内置级别返回 false
function listCustomLevels(): string[];

function freezeEntry<T extends LogEntry>(entry: T): T & FrozenLogEntry;
type FrozenLogEntry = Readonly<LogEntry> & {
  readonly context: Readonly<Record<string, unknown>>;
  readonly metadata: Readonly<Record<string, unknown>>;
  readonly args: readonly unknown[];
};
// 在条目抵达传输器边界时将其冻结(幂等)。条目会被自动冻结;
// 当你自行构建条目时使用此函数。参见[不可变性与零拷贝](../guide/immutability.md)。

相关类型:LogLevelValue(= number)、LogLevelInput(= 内置 LogLevelName、 任意已注册的自定义级别名(string)、或数值), 以及 LoggerMethods(即 Logger 实现的 trace…fatal 方法映射)。

Released under the MIT License.