node.js – 错误:使用Bunyan旋转文件记录(NodeJS)的ENOENT

我正在使用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角度进行异步和单独调用,但是同时从操作系统的角度来看).

点赞