const log4js = require('log4js') const {format} = require('date-fns'); const {zonedTimeToUtc, utcToZonedTime} = require('date-fns-tz'); const EASTERN_EIGHT_ZONE = 'Asia/Shanghai'; log4js.addLayout('customLayout', (config) => { return (logEvent) => { // 转换为东八区时间 const zonedDate = utcToZonedTime(logEvent.startTime, EASTERN_EIGHT_ZONE); // 格式化时间 const formattedDate = format(zonedDate, 'yyyy-MM-dd HH:mm:ss.SSS', { timeZone: EASTERN_EIGHT_ZONE }); return `${formattedDate} ${logEvent.level} [${logEvent.categoryName}] ${logEvent.data}`; }; }); // 配置 log4js log4js.configure({ //输出格式 appenders: { nodeFile: { type: 'dateFile', filename: 'logs/node/application.log', // 指定日志文件的路径和基本名称 pattern: '.yyyy-MM-dd', // 文件名后缀的日期格式 compress: true, // 当日志文件滚动时,压缩(归档)旧文件 numBackups: 30, // 保留30个备份文件 keepFileExt: true, // 保持文件扩展名 layout: { // type: 'pattern', type: 'customLayout', pattern: `%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %c - %m`, } }, console: { type: 'console', layout: { // type: 'pattern', type: 'customLayout', pattern: `%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %c - %m`, } } }, //TRACE>DEBUG>INFO >WARN>ERROR>FATAL\ //default 代表默认的日志对象 : log4js.getLogger(); //日志对象 categories: { //控制台输出对象 default: { appenders: ['console', 'nodeFile'], level: 'TRACE' }, // //文件输出对象 // infoFile: { // appenders: ['fileAppender'], // level: 'DEBUG' // } } }); // 获取默认logger(控制台) const logger = log4js.getLogger(); // 获取记录info级别日志到文件的logger // const fileLogger = log4js.getLogger('infoFile'); module.exports = {logger};