const { createLogger, format, transports } = require('winston');
|
require('winston-daily-rotate-file');
|
|
const { combine, timestamp, label, printf } = format;
|
function formatDate(date) {
|
const year = date.getFullYear();
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
const day = String(date.getDate()).padStart(2, '0');
|
const hours = String(date.getHours()).padStart(2, '0');
|
const minutes = String(date.getMinutes()).padStart(2, '0');
|
const seconds = String(date.getSeconds()).padStart(2, '0');
|
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
}
|
// 自定义日志格式
|
const myFormat = printf(({ level, message, label, timestamp }) => {
|
const formattedTimestamp = formatDate(new Date(timestamp));
|
return `${formattedTimestamp} [${label}] ${level}: ${message}`;
|
});
|
|
// 创建日志记录器
|
const logger = createLogger({
|
level: 'info', // 设置最低日志级别
|
format: combine(
|
label({ label: 'dataSocketService' }), // 可选:给日志添加标签
|
timestamp(), // 添加时间戳
|
myFormat // 使用自定义格式
|
),
|
transports: [
|
new transports.Console(), // 输出到控制台(可选)
|
new transports.DailyRotateFile({
|
filename: 'logs/application-%DATE%.log', // 日志文件名模式
|
datePattern: 'YYYY-MM-DD', // 日期格式
|
zippedArchive: true, // 归档旧日志文件时压缩
|
maxSize: '20m', // 文件最大大小
|
maxFiles: '14d', // 保留最近14天的日志文件
|
}),
|
],
|
});
|
|
module.exports = logger;
|