@hestjs/logger
Version:
HestJS Logger - A powerful logging solution based on Pino
130 lines • 3.66 kB
JavaScript
;
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