chore(deps): add pino logger dependency
Add pino v10.3.1 to project dependencies for structured logging support, along with its transitive dependencies (pino-abstract-transport, pino-std-serializers, quick-format-unescaped, atomic-sleep, etc.).
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import pino, { type Logger as PinoLogger, type LoggerOptions } from "pino";
|
||||
|
||||
import { isProduction, isTest } from "./app-env";
|
||||
|
||||
/**
|
||||
* 全局 pino root logger(单例,进程级复用)。
|
||||
*
|
||||
* 配置驱动(基于 `app-env.ts` 的 `isProduction()` / `isTest()`):
|
||||
* - production: info 级别 + JSON(机器可解析,接入日志平台)
|
||||
* - test: warn 级别(减少 vitest 噪音)
|
||||
* - development: debug 级别 + ISO 时间戳(人眼友好)
|
||||
*/
|
||||
const rootLogger: PinoLogger = pino(createLoggerOptions());
|
||||
|
||||
function createLoggerOptions(): LoggerOptions {
|
||||
if (isProduction()) {
|
||||
return { level: "info" };
|
||||
}
|
||||
if (isTest()) {
|
||||
return { level: "warn" };
|
||||
}
|
||||
// development
|
||||
return { level: "debug", timestamp: pino.stdTimeFunctions.isoTime };
|
||||
}
|
||||
|
||||
/**
|
||||
* Logger 工具类(pino 包装)
|
||||
*
|
||||
* 设计:
|
||||
* - 构造时绑定 `component` 名(业务模块标识)
|
||||
* - 所有日志自动带 `{ component: "AuthRepository" }` 字段
|
||||
* - 透传 pino 原生 5 个 level:debug / info / warn / error / fatal
|
||||
*
|
||||
* 用法:
|
||||
* const log = new Logger("AuthRepository");
|
||||
* log.info("login success");
|
||||
* log.warn({ err }, "storage write failed");
|
||||
* log.error(e, "consumer error");
|
||||
* log.debug({ userId: 123 }, "fetched user");
|
||||
*/
|
||||
export class Logger {
|
||||
private readonly logger: PinoLogger;
|
||||
|
||||
constructor(component: string) {
|
||||
this.logger = rootLogger.child({ component });
|
||||
}
|
||||
|
||||
debug(...args: Parameters<PinoLogger["debug"]>): void {
|
||||
this.logger.debug(...args);
|
||||
}
|
||||
info(...args: Parameters<PinoLogger["info"]>): void {
|
||||
this.logger.info(...args);
|
||||
}
|
||||
warn(...args: Parameters<PinoLogger["warn"]>): void {
|
||||
this.logger.warn(...args);
|
||||
}
|
||||
error(...args: Parameters<PinoLogger["error"]>): void {
|
||||
this.logger.error(...args);
|
||||
}
|
||||
fatal(...args: Parameters<PinoLogger["fatal"]>): void {
|
||||
this.logger.fatal(...args);
|
||||
}
|
||||
|
||||
/** 透传 raw pino logger(高级用法:自定义 binding / child / serializers) */
|
||||
get raw(): PinoLogger {
|
||||
return this.logger;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user