UNPKG

@hestjs/logger

Version:

HestJS Logger - A powerful logging solution based on Pino

130 lines 3.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createConsoleTransport = createConsoleTransport; exports.createFileTransport = createFileTransport; exports.createRotatingFileTransport = createRotatingFileTransport; exports.createJsonFileTransport = createJsonFileTransport; exports.createMultiTransport = createMultiTransport; exports.createDevelopmentTransport = createDevelopmentTransport; exports.createProductionTransport = createProductionTransport; exports.getEnvironmentTransport = getEnvironmentTransport; /** * 控制台传输配置 */ function createConsoleTransport(options = {}) { return { type: "console", target: "pino-pretty", options: { colorize: options.colorize ?? true, translateTime: options.translateTime ?? "yyyy-mm-dd HH:MM:ss.l", ignore: options.ignore ?? "pid,hostname", singleLine: options.singleLine ?? false, hideObject: options.hideObject ?? false, messageFormat: "{end}{msg}", ...options, }, }; } /** * 文件传输配置 */ function createFileTransport(options = { destination: "./logs/app.log" }) { const { destination, ...restOptions } = options; return { type: "file", target: "pino/file", options: { destination, mkdir: true, append: true, ...restOptions, }, }; } /** * 滚动文件传输配置 */ function createRotatingFileTransport(options = { filename: "./logs/app-%DATE%.log" }) { return { type: "custom", target: "pino-roll", options: { file: options.filename, frequency: options.frequency ?? "daily", size: options.maxSize ?? "10M", limit: options.maxFiles ?? "7", dateFormat: options.dateFormat ?? "YYYY-MM-DD", ...options, }, }; } /** * JSON 文件传输配置 */ function createJsonFileTransport(options = { destination: "./logs/app.json" }) { return { type: "file", target: "pino/file", options: { destination: options.destination, mkdir: options.mkdir ?? true, append: options.append ?? true, }, }; } /** * 多传输配置 */ function createMultiTransport(transports) { return { targets: transports.map((transport) => ({ target: transport.target, options: transport.options, level: transport.options?.level, })), }; } /** * 开发环境传输 */ function createDevelopmentTransport() { return createConsoleTransport({ colorize: true, translateTime: "yy-mm-dd HH:MM:ss.l", ignore: "pid,hostname", singleLine: false, }); } /** * 生产环境传输 */ function createProductionTransport() { return createMultiTransport([ createJsonFileTransport({ destination: "./logs/app.json", }), createFileTransport({ destination: "./logs/error.log", }), ]); } /** * 根据环境获取传输配置 */ function getEnvironmentTransport(env) { const environment = env || process.env.NODE_ENV || "development"; switch (environment) { case "production": case "prod": return createProductionTransport(); case "test": case "testing": return undefined; // 测试环境通常不需要传输 case "development": case "dev": default: return createDevelopmentTransport(); } } //# sourceMappingURL=transports.js.map