如何将日期添加到pm2错误日志?

Pla*_*bit 59 node.js pm2

有没有办法在.pm2/logs中为错误日志添加时间戳?

我注意到该pm2 logs命令显示带有时间戳的聚合日志,但查看日志文件 - 只有消息和没有日期的堆栈跟踪.

在此输入图像描述

Abd*_*ady 70

根据此问题此提交,您可以使用:

pm2 start app.js --log-date-format 'DD-MM HH:mm:ss.SSS'
Run Code Online (Sandbox Code Playgroud)

哪里'DD-MM HH:mm:ss.SSS'momentjs有效的格式.

  • 你好,这个剂对我不起作用.我用pm2来管理python脚本,你能告诉我这是什么问题吗?TXU. (3认同)
  • 有什么方法可以只给 *error* 日志加时间戳而不是标准控制台日志?我已经给console.log 的所有内容打上了时间戳。 (3认同)

Rap*_*tor 35

根据命令行,help(pm2 logs -h)running pm2 logs --timestamp命令应该为日志添加时间戳.但它似乎不会影响旧日志!显然只有新日志显示时间戳.

要解决此问题--log-date-format="YYYY-MM-DD HH:mm Z",请将传递给pm2作为参数.例如:

pm2 start bin/www --log-date-format="YYYY-MM-DD HH:mm Z"
Run Code Online (Sandbox Code Playgroud)

使用process.json

我喜欢process.json启动我的应用程序以方便,所以我的process.json包含以下内容:

{
  "apps" : [
    {
      "name"        : "app",
      "script"      : "bin/www",
      "log_date_format" : "YYYY-MM-DD HH:mm Z"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

然后我通过运行启动我的应用程序:

pm2 start process.json
Run Code Online (Sandbox Code Playgroud)

完成后,我看到时间戳只是通过运行显示:pm2 logs请注意,我没有指定--timestamp来查看时间戳.

app (out): 2016-08-04 13:46 +01:00: My log here
Run Code Online (Sandbox Code Playgroud)

好读:http://pm2.keymetrics.io/docs/usage/log-management/

  • 不知道为什么,但我只能获取正常日志的时间戳,而不能获取错误日志的时间戳。 (3认同)

Fra*_*ion 8

要使用标准格式的时间戳:

pm2 start app.js --time
Run Code Online (Sandbox Code Playgroud)

或者,如果您想使用自定义格式的时间戳作为日志前缀:

pm2 start app.js --log-date-format <format>
Run Code Online (Sandbox Code Playgroud)

哪里<format>矩显示格式(例如YYYY-MM-DD HH:mm Z)。

如果你的应用程序已经在运行,你可以使用reload一个0秒的停机时间重装:

pm2 reload app.js --time
Run Code Online (Sandbox Code Playgroud)

或者

pm2 reload app.js --log-date-format <format>
Run Code Online (Sandbox Code Playgroud)


Man*_*ddy 8

浪费了30分钟。


  • 不工作
    • 其他答案不起作用
    • 官方 CLI 也不起作用: pm2 start app.js [OPTIONS],例如: pm2 start app.js --time
  • 工作过

  • pm2-config.js在您的应用程序根目录中创建一个生态系统文件(例如:beside package.json

粘贴以下内容并保存:

module.exports = {
  apps: [
    {
      name: "my-app1",
      script: "./index.js",
      time: true,  // <----------------------- This is the key to make it work
      watch: false,
      env: {
        PORT: 4001,
        NODE_ENV: "production",
      },
    },
  ],
};
Run Code Online (Sandbox Code Playgroud)
  • 现在创建一个shell脚本start.sh(或,批处理文件,或,直接在命令下面运行)

粘贴以下内容并保存:

pm2 stop pm2-config.js
pm2 delete pm2-config.js
pm2 start pm2-config.js 
Run Code Online (Sandbox Code Playgroud)


小智 7

pm2 start app.js --log-date-format "YYYY-MM-DD HH:mm"

  • anser可以,但请添加更多说明. (3认同)
  • 为什么OP会尝试这个?请添加一个解释,说明你做了什么,以及为什么你这样做,不仅对OP而且为未来的SO访问者. (3认同)

Mic*_*ael 5

我使用PM2,但我不太关心日志.相反,我使用bunyan,它为日志记录提供了大量的灵活性.如果您使用--global安装它,您也可以将其用作实时日志查看器:

但是,这不会为您的console.log输出添加时间戳.但是如果您转换为log.info()或任何其他Bunyan日志功能,您将获得良好的日志记录.

要使用bunyan查看实时pm2日志,只需将其管道:

pm2 logs | bunyan
Run Code Online (Sandbox Code Playgroud)

  • PM2为pm2 logs命令添加了一个--raw标志,通过使用pm2 logs --raw |来启用上述命令 本仁.这将在下一个版本中提供. (2认同)

Ama*_*ngh 5

  1. 首先更新格式(确保服务器时区是你想要的)
    pm2 restart 0 --log-date-format "DD-MM-YYYY HH:MM Z" 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 保存所有流程
    pm2 save
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行这些
    npm i -G pm2 //if not latest  
    pm2 update
    
    Run Code Online (Sandbox Code Playgroud)

这有效并显示登录服务器时区,否则时区会有所不同