📅  最后修改于: 2023-12-03 15:05:58.071000             🧑  作者: Mango
Winston是一个Node.js的日志记录库,它可以灵活地配置记录格式、级别和存储位置。该库允许你为每个级别创建特定的日志文件,让你更加细化地掌控日志记录和分析。
安装Winston库以及文件日志记录器(winston-daily-rotate-file):
npm install winston winston-daily-rotate-file
首先我们需要导入并配置Winston:
const winston = require('winston');
const { createLogger, format } = winston;
const { combine, timestamp, printf } = format;
const myFormat = printf(({ level, message, timestamp }) => {
return `${timestamp} [${level}]: ${message}`;
});
const logger = createLogger({
format: combine(
timestamp(),
myFormat
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'combined.log' })
]
});
我们创建了一个在控制台和文件combined.log中记录日志的记录器。
现在让我们为每个日志级别都创建一个文件记录器。
const myFormat = printf(({ level, message, timestamp }) => {
return `${timestamp} [${level}]: ${message}`;
});
const getFileTransport = (level, filename) => {
return new winston.transports.File({
filename: `${level}.log`,
level: level,
format: combine(
timestamp(),
myFormat
)
});
}
const logger = createLogger({
format: combine(
timestamp(),
myFormat
),
transports: [
new winston.transports.Console(),
getFileTransport('error'),
getFileTransport('warn'),
getFileTransport('info'),
getFileTransport('http'),
getFileTransport('verbose'),
getFileTransport('debug'),
getFileTransport('silly')
]
});
现在,我们为每个日志级别都创建了一个记录器,并使用特定的文件名存储记录。当Winston的Log方法被调用时,它会将日志事件分派给符合事件级别的所有传输。因此,在调用logger.error()
时,记录器将将信息写入error.log文件中。
现在,每个级别都有一个专用文件和一个记录器。这让我们可以更方便地分析和过滤日志。
使用Winston记录日志,可以更灵活地设置打印格式和记录级别。创建一个特定的文件日志记录器,可以更好地掌控和分析日志。