我正在使用Bunyan模块进行NodeJS日志记录.当我尝试使用旋转文件类型时,它会使我的应用程序每次都崩溃并输出此错误:
Error: ENOENT, rename ‘logs/info.log.3’
但是,它永远不会同时发生,所以我找不到任何逻辑……
这就是我实现记录器的方式:
var log = Bunyan.createLogger(config.log.config);
log.info('App started, ' + process.env.NODE_ENV);
这是我的config.json:
{
"name" : "app",
"streams" : [
{
"type" : "rotating-file",
"period": "5000ms", //Low period is for testing purposes
"count" : 12,
"level" : "info",
"path" : "logs/info.log"
},
{
"type" : "rotating-file",
"period": "5000ms",
"count" : 12,
"level" : "error",
"path" : "logs/error.log"
},
{
"type" : "rotating-file",
"period": "5000ms",
"count" : 12,
"level" : "trace",
"path" : "logs/trace.log"
}
]
}
任何人都可以建议如何解决我的问题?提前致谢.
最佳答案 我在没有使用群集的情况下遇到了同样的问题.我认为问题是由位于日志目录中的旧文件引起的.虽然主记录器可以打开并附加到现有文件,但文件轮换逻辑使用重命名,该文件在处理现有文件时使用. (例如现有的info.log.3文件).
我仍在挖掘源代码,找出需要改变的内容,以便从滚动错误中恢复.
另外一个想法是我查看来源.如果您有多个Bunyan日志实例使用相同的日志文件(在我的情况下,是一个常见的error.log),重命名调用几乎可以同时从OS级别发生(从Node.js角度进行异步和单独调用,但是同时从操作系统的角度来看).