什么是日志级别?
What is logging levels?
我知道传输是我想保存日志的地方,但我不明白什么是日志级别?我有以下代码来创建具有多种传输方式的记录器。
const logger = winston.createLogger({
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/info.log', level: 'info' }),
],
})
当我想记录 logger.log('error', err)
时,它会同时记录 info.log
和 error.log
文件。为什么会这样?有人可以解释一下日志级别的概念吗?
Geno 的评论是正确的;在几乎所有日志记录平台(winston、log4js 等)中,日志级别 表示要打印的错误的最大级别。
将日志级别设置为错误意味着 "only print FATAL and ERROR messages"。
将日志级别设置为 INFO 意味着 "print FATAL, ERROR, WARN, and INFO messages"。
没有办法(至少在 Winston,但我认为这通常是普遍适用的)来指定 仅 携带 INFO 消息和 不是 错误消息。这是设计使然。
设置日志级别时,实际上是在指定 详细级别 - FATAL 是最不详细的日志记录,DEBUG 是最详细的日志记录。要求更多详细信息然后让致命错误从日志中消失是没有意义的。这就是为什么每个错误级别还包括来自级别 "below" 的所有消息。
我知道传输是我想保存日志的地方,但我不明白什么是日志级别?我有以下代码来创建具有多种传输方式的记录器。
const logger = winston.createLogger({
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/info.log', level: 'info' }),
],
})
当我想记录 logger.log('error', err)
时,它会同时记录 info.log
和 error.log
文件。为什么会这样?有人可以解释一下日志级别的概念吗?
Geno 的评论是正确的;在几乎所有日志记录平台(winston、log4js 等)中,日志级别 表示要打印的错误的最大级别。
将日志级别设置为错误意味着 "only print FATAL and ERROR messages"。
将日志级别设置为 INFO 意味着 "print FATAL, ERROR, WARN, and INFO messages"。
没有办法(至少在 Winston,但我认为这通常是普遍适用的)来指定 仅 携带 INFO 消息和 不是 错误消息。这是设计使然。
设置日志级别时,实际上是在指定 详细级别 - FATAL 是最不详细的日志记录,DEBUG 是最详细的日志记录。要求更多详细信息然后让致命错误从日志中消失是没有意义的。这就是为什么每个错误级别还包括来自级别 "below" 的所有消息。