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

时间:2014-01-23 19:43:26

标签: node.js pm2

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

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

enter image description here

8 个答案:

答案 0 :(得分:63)

根据this issue& this commit,您可以使用:

pm2 start app.js --log-date-format 'DD-MM HH:mm:ss.SSS'

其中'DD-MM HH:mm:ss.SSS'是任何momentjs有效格式。

答案 1 :(得分:30)

根据命令行帮助(pm2 logs -h)运行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"

使用process.json

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

{
  "apps" : [
    {
      "name"        : "app",
      "script"      : "bin/www",
      "log_date_format" : "YYYY-MM-DD HH:mm Z"
    }
  ]
}

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

pm2 start process.json

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

app (out): 2016-08-04 13:46 +01:00: My log here

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

答案 2 :(得分:6)

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

答案 3 :(得分:5)

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

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

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

pm2 logs | bunyan

答案 4 :(得分:2)

要使用标准格式的时间戳,请执行以下操作:

pm2 start app.js --time

或者如果您想在日志中添加自定义格式的时间戳记

pm2 start app.js --log-date-format <format>

<format>moment display format(例如YYYY-MM-DD HH:mm Z)的地方。

如果您的应用已经在运行,则可以使用reload进行 0秒停机重新加载:

pm2 reload app.js --time

pm2 reload app.js --log-date-format <format>

答案 5 :(得分:2)

为此浪费了30分钟。


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

  • 在应用程序根目录中创建一个生态系统文件pm2-config.js(例如: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",
      },
    },
  ],
};
  • 现在创建一个shell脚本start.sh(或,批处理文件,或,直接在下面的命令下运行)

粘贴以下内容并保存:

pm2 stop pm2-config.js
pm2 delete pm2-config.js
pm2 start pm2-config.js 

答案 6 :(得分:1)

对于process.yml,请遵循以下示例格式。对我有用

 apps:
  - script   : ./SampleApi/app.js
    name     : 'api-proxy-app'
    instances: 2
    exec_mode: cluster
    watch  : true
    log_date_format : "YYYY-MM-DD HH:mm Z"

带有DateTime的示例日志格式:

2019-07-28 13:46 +06:00: channel created for cancel mandate--####################################
2019-07-28 13:46 +06:00: channel created for cancel mandate--####################################
2019-07-28 13:46 +06:00: channel created for exception scenario--####################################
2019-07-28 13:46 +06:00: channel created for create mandate--####################################
2019-07-28 13:46 +06:00: create channel initiated for cancel mandate--------------------->
2019-07-28 13:46 +06:00: create channel initiated for create mandate--------------------->
2019-07-28 13:46 +06:00: create channel initiated for update mandate--------------------->

使用--log-date-format不适用于我。

答案 7 :(得分:0)

  1. 首先更新格式(确保服务器时区是您想要的)
    velero
  2. 保存所有过程
          kubectl delete namespace -n velero
    
  3. 运行这些
    pm2 restart 0 --log-date-format "DD-MM-YYYY HH:MM Z" 
    

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