33 lines
1.0 KiB
JavaScript
33 lines
1.0 KiB
JavaScript
const { createLogger, format, transports } = require('winston');
|
|
const path = require('path');
|
|
|
|
// 定义日志格式:时间戳 + 日志级别 + 消息
|
|
const logFormat = format.combine(
|
|
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
|
|
format.printf(info => {
|
|
// 把额外的参数取出来
|
|
const splat = info[Symbol.for('splat')] || [];
|
|
const msg = [info.message, ...splat].map(v =>
|
|
typeof v === 'object' ? util.inspect(v, { depth: null }) : v
|
|
).join(' ');
|
|
|
|
return `[${info.timestamp}] ${msg}`;
|
|
})
|
|
);
|
|
|
|
// 创建 logger
|
|
const logger = createLogger({
|
|
level: 'info', // 默认日志等级
|
|
format: logFormat,
|
|
transports: [
|
|
new transports.File({
|
|
filename: path.join(__dirname, 'log/app.log'), // 日志文件名
|
|
maxsize: 5 * 1024 * 1024, // 每个文件最大 5MB
|
|
maxFiles: 99, // 最多保留 5 个旧日志文件
|
|
tailable: true // 让文件轮转时顺序保持最新在最后
|
|
}),
|
|
new transports.Console() // 同时输出到控制台(可选)
|
|
]
|
|
});
|
|
|
|
module.exports = logger; |