【问题标题】:Nodejs Merging log with PM2 and WinstonNodejs 与 PM2 和 Winston 合并日志
【发布时间】:2015-01-18 17:52:17
【问题描述】:

我只想将所有信息记录在一个文件中。我正在使用 pm2 "0.12.1" 和 "winston": "0.8.3"。

这是我的温斯顿代码

var winston = require('winston');

var customLoggerLevels = {
  levels: {
    trace: 0,
    debug: 1,
    info: 2,
    warn: 3,
    error: 4
  },
  colors: {
    trace: 'blue',
    debug: 'green',
    info: 'grey',
    warn: 'yellow',
    error: 'red'
  }
};

var logger = new (winston.Logger)({
  levels: customLoggerLevels.levels
});

还有我的一个生态系统.json

 "apps" : [
    {
      "name"      : "myapp",
      "script"    : "server.js",
      "instances"  : "1",
      "err_file"    : "myapp.log",
      "out_file"    : "myapp.log",
      "env": {
        "NODE_ENV": "development",
        "PORT": 4000
      },
      "env_production" : {
        "NODE_ENV": "production",
        "PORT": 4000
      }
    }
  ]

这对我不起作用。我不明白为什么 pm2 仍然创建两个文件,一个用于输出,一个用于错误。另外我想知道是否可以将文件放在生产中的另一个目录中。

谢谢

【问题讨论】:

    标签: node.js winston pm2


    【解决方案1】:

    您可以在 out_fileerror_file 键中指定文件路径。 默认情况下,pm2 将stdout 输出重定向到与stderr 输出不同的文件。 如果您只想拥有一个日志文件,只需对两个输出使用相同的路径。

    您的ecosystem.json 如下所示:

    "apps" : [
        {
          "name"      : "myapp",
          "script"    : "server.js",
          "instances"  : "1",
          "error_file"    : "/var/log/myapp.log",
          "out_file"    : "/var/log/myapp.log",
          "env": {
            "NODE_ENV": "development",
            "PORT": 4000
          },
          "env_production" : {
            "NODE_ENV": "production",
            "PORT": 4000
          }
        }
      ]
    

    还有一个选项可以合并每个实例的日志(它不是合并/错误)。要使用它,请指定merge_logs: true。它还允许您在日志文件名中使用get rid of the pm2 id

    【讨论】:

    • 谢谢,工作完美,唯一不能做的就是将日志文件放入环境中(在每种情况下管理不同的路径)
    • 有趣的是,您可能想在github 上提出问题,作为功能请求,并附上您想要的示例;)。
    猜你喜欢
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2019-07-11
    • 2021-04-26
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多