1.前言
node
可以作为服务端使用,可以在electron
中使用,使用范围较为广泛,同时,为了方便追溯操作,追溯错误,就需要保存node
运行过程中的日志了,nodejs
的日志库也有很多,例如winston
,Bunyan
,Pino
等等,本篇文章中使用到的库是winston
2.前置操作
1.需要下载winston
与rotating-file-stream
库(rotating-file-stream
的具体作用后面会说)
bash
npm i rotating-file-stream winston
2.导入winston
与rotating-file-stream
js
const winston = require('winston');
const rfs = require('rotating-file-stream');
3.winston与rotating-file-stream的配置
js
// 创建 logger 实例
const logger = winston.createLogger({
// 自定义级别及优先级(数值越小越重要)
levels: {
error: 0, // 错误日志
warning: 1, // 警告日志
success: 2, // 成功日志
currently: 3, // 正在进行日志
info: 4 // 记录信息日志
},
// 设置最低日志级别(这里设置为最低级别,记录一切信息)
level: 'info',
format: winston.format.combine(
// 设置日志中时间的格式
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }),
// 设置日志的输出格式
winston.format.printf(({ timestamp, level, message }) => `${timestamp} [${level}]: ${message}`),
),
transports: [
new winston.transports.Stream({
stream: rfs.createStream('web-log.log', {
path: '', // 文件存储地址
size: '1M', // 单个文件最大 1MB
maxFiles: 10, // 最多保留 10 个文件
compress: false,
rotate: 10 // 保留文件数
})
})
]
});
4.代码解析
1.rotating-file-stream
库的作用? rotating-file-stream
库适用于设置本地记录的日志的流转,并且指定日志存储的路径,例如上方代码的配置即当单个日志文件超出1mb时自动创建新的日志文件,当历史的日志文件超出10个时,则会删除最初的日志文件,这样可以保证日志的数量不会无底线的增加,也可以有效的控制每个日志文件的大小
2.这么多第三方日志记录的库,为什么选择winston
? 因为winston
与python
的logger
模块非常类似,并且功能较为强大,层级分明,只要能配置好,基本上可以满足很多需求,所以选择了winston
库
5.总结
以上就是本篇博客的全部内容了,如果有任何疑问或者需要讨论的地方,欢迎私信或者评论😁