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;