有没有办法在 .pm2/logs 中为错误日志添加时间戳?
我注意到该pm2 logs
命令显示带有时间戳的聚合日志,但查看日志文件 - 只有消息和堆栈跟踪没有日期。
根据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
有效的格式在哪里。
根据命令行帮助 ( 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 包含以下内容:
{
"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/
pm2 start app.js --log-date-format "YYYY-MM-DD HH:mm"
在这上面浪费了 30 分钟。
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",
},
},
],
};
start.sh
(OR,批处理文件,OR,直接在命令下面运行) 粘贴以下内容并保存:
pm2 stop pm2-config.js
pm2 delete pm2-config.js
pm2 start pm2-config.js
我使用 PM2,但我不太关心日志。相反,我使用 bunyan,它为日志记录提供了很大的灵活性。如果您使用--global安装它,您还可以将其用作实时日志查看器:
不过,这不会为您的 console.log 输出添加时间戳。但是,如果您转换为log.info()
或任何其他 Bunyan 日志功能,您将获得很好的日志记录。
要使用 bunyan 查看实时 pm2 日志,只需管道:
pm2 logs | bunyan
pm2 restart 0 --log-date-format "DD-MM-YYYY HH:MM Z"
pm2 save
npm i -G pm2 //if not latest
pm2 update
这有效并在服务器时区中显示日志,其他明智的时区将不同
对于 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 对我不起作用。