100

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

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

在此处输入图像描述

4

8 回答 8

150

根据pm2 logs 官方文档,您可以使用--time, 它为日志添加标准格式的时间戳。

pm2 start app.js --time 

如果您已经创建了应用程序,则可以在重新启动应用程序时更新它:

pm2 restart 0 --time

确保pm2 save之后。

请注意,您还可以根据此问题此提交使用自定义格式化程序:

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

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

于 2015-04-27T15:16:41.533 回答
46

根据命令行帮助 ( 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/

于 2016-08-04T06:00:44.607 回答
13
pm2 start app.js --log-date-format "YYYY-MM-DD HH:mm"
于 2015-03-24T07:43:13.177 回答
10

在这上面浪费了 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",
      },
    },
  ],
};
  • 现在创建一个shell脚本start.sh(OR,批处理文件,OR,直接在命令下面运行)

粘贴以下内容并保存:

pm2 stop pm2-config.js
pm2 delete pm2-config.js
pm2 start pm2-config.js 
于 2020-05-21T05:02:33.860 回答
8

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

pm2 start app.js --time

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

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

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

如果您的应用程序已经在运行,您可以使用reload0秒停机时间重新加载:

pm2 reload app.js --time

或者

pm2 reload app.js --log-date-format <format>
于 2019-07-03T15:16:28.160 回答
6

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

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

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

pm2 logs | bunyan
于 2014-11-13T11:46:12.660 回答
4
  1. 首先更新格式(确保服务器时区是你想要的)
    pm2 restart 0 --log-date-format "DD-MM-YYYY HH:MM Z" 
    
  2. 保存所有进程
    pm2 save
    
  3. 运行这些
    npm i -G pm2 //if not latest  
    pm2 update
    

这有效并在服务器时区中显示日志,其他明智的时区将不同

于 2020-10-05T15:39:30.283 回答
3

对于 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"

带日期时间的示例日志格式:

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 对我不起作用。

于 2019-07-28T07:50:55.337 回答