如何解决温斯顿DailyRotateFile不记录错误
我正在尝试使用Winston的DailyRotateFile
进行日志记录-所有日志都应放在按时间表循环的单个文件中。我的目标是一次性设置此记录器,然后在记录信息时根据需要调用它。我的问题是由于某种原因,错误未正确记录。每次发生错误时,我都会得到如下一行:2020-11-07T16:50:47.372Z error: undefined
,除此之外,什么都没有-没有堆栈跟踪或其他任何东西。我通过winston.error(err)
记录了错误。我以前发现过一些同样的问题,但是所提供的解决方案似乎根本没有帮助我(例如,此github线程在https://github.com/winstonjs/winston/issues/1338#issuecomment-697958085),所以我在这里提问。为了更加清楚起见,我提供了logger.js
文件以提供帮助:
const winston = require('winston')
require('winston-daily-rotate-file')
const { format } = require('winston')
const path = require('path')
require('dotenv').config()
const logPath = path.join(__dirname,'/logs')
const tsFormat = () => (new Date().toISOString())
// remove default options
winston.remove(winston.transports.Console)
winston.remove(winston.transports.File)
// Used to print error stacktraces
const print = format.printf((info) => {
let { timestamp,level,code,stack,message } = info;
// print out http error code w/ a space if we have one
code = code ? ` ${code}` : '';
// print the stack if we have it,message otherwise.
message = stack || message;
const log = `${timestamp} ${level}${code}: ${message}`
return info.stack ? `${log}\n${info.stack}` : log
})
const rotateLogTransport = new winston.transports.DailyRotateFile({ // eslint-disable-line
filename: process.env.NODE_ENV === 'production' ? 'App-%DATE%.log' : 'AppDev-%DATE%.log',dirname: logPath,level: 'info',colorize: true,format: format.combine(
format.colorize(),format.timestamp(),format.align(),format.errors({ stack: true }),print
),timestamp: tsFormat,json: false,zippedArchive: true,maxSize: '20m'
})
const devTransportConsole = new winston.transports.Console({
level: 'info',print
)
})
winston.add(devTransportConsole)
winston.add(rotateLogTransport)
我在我的主要app.js
代码中需要此文件,如下所示,然后我只需在其他文件中引用winston.info
或winston.error
来记录内容。
...
const winston = require('winston')
const logger = require('./logger') // eslint-disable-line
...
client
.on('error',console.error)
.on('warn',console.warn)
.on('ready',async () => {
winston.info(`Client ready; logged in as ${client.user.tag}! (${client.user.id})`)
})
...
我不确定从这里到底要走什么路,或者不确定是否有更简单的方法来完成所有这些工作,但是令人沮丧的是无法看到正在发生的错误以及代码中的错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。