pm2下的自定义日志记录
custom logging under pm2
我在写入 console.log
的节点应用程序中有一些有用的日志记录
node server.js >> /var/log/nodeserver.log 2>&1
然而,当在 pm2 下尝试相同时:
pm2 start server.js >> /var/log/pm2server.log 2>&1
日志文件只显示pm2启动信息
是否可以使用 pm2 进行应用程序日志记录?在他们的页面上,他们讨论了日志记录,并显示了带有 "log message from echo.js"
之类文本的图像,但我看不到有关将自定义信息输入 pm2 日志的任何信息。
当 运行 pm2 时,您的应用程序日志将驻留在 $HOME/.pm2/logs
中,如 here 所述。使用输出 console.log('test')
的简单 index.js
文件在本地验证这一点
$ pm2 start index.js
[PM2] Spawning PM2 daemon
[PM2] PM2 Successfully daemonized
[PM2] Starting index.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬────────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼────────────┼──────────┤
│ index │ 0 │ fork │ 36976 │ online │ 0 │ 0s │ 9.258 MB │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴────────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
请注意我在这里没有看到 console.log
输出, 但是 ,如果我导航到 $HOME/.pm2/logs
我会看到
logs $ ls
index-error-0.log index-out-0.log
logs $ cat index-out-0.log
test
一个漂亮的功能是在终端中使用 logs
功能:
pm2 logs [--raw]
这将直播所有日志。其他方便的命令是:
pm2 flush
pm2 reloadLogs
2017年更新
在执行pm2命令时将日志路径定义为参数(-l
、-o
、-e
)非常好用,通常是最好的选择。
但是,如果你不想每次执行pm2时都定义日志路径,你可以生成一个配置文件,定义error_file
和out_file
,然后从中启动pm2:
生成配置文件:pm2 ecosystem simple
。这将生成一个文件 ecosystem.config.js
,内容如下:
module.exports = {
apps : [{
name : "app1",
script : "./app.js"
}]
}
在文件中定义error_file
(错误日志)和out_file
(信息日志),如:
module.exports = {
apps : [{
name : "app1",
script : "./app.js",
error_file : "./err.log",
out_file : "./out.log"
}]
}
从配置文件启动进程:
pm2 start ecosystem.config.js
这样,日志就保存到./err.log
和./out.log
.
详情请参考document
如果是新的开始,你只需:
- 运行
pm2 start/reload ecosystem.config.js [--only your_app]
但是当它已经启动时(pm2 已经在管理它)你必须做(有人可以找到更好的方法,但这对我有用):
- 运行
pm2 delete your_app
- 运行
pm2 start
我在写入 console.log
node server.js >> /var/log/nodeserver.log 2>&1
然而,当在 pm2 下尝试相同时:
pm2 start server.js >> /var/log/pm2server.log 2>&1
日志文件只显示pm2启动信息
是否可以使用 pm2 进行应用程序日志记录?在他们的页面上,他们讨论了日志记录,并显示了带有 "log message from echo.js"
之类文本的图像,但我看不到有关将自定义信息输入 pm2 日志的任何信息。
当 运行 pm2 时,您的应用程序日志将驻留在 $HOME/.pm2/logs
中,如 here 所述。使用输出 console.log('test')
index.js
文件在本地验证这一点
$ pm2 start index.js
[PM2] Spawning PM2 daemon
[PM2] PM2 Successfully daemonized
[PM2] Starting index.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬────────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼────────────┼──────────┤
│ index │ 0 │ fork │ 36976 │ online │ 0 │ 0s │ 9.258 MB │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴────────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
请注意我在这里没有看到 console.log
输出, 但是 ,如果我导航到 $HOME/.pm2/logs
我会看到
logs $ ls
index-error-0.log index-out-0.log
logs $ cat index-out-0.log
test
一个漂亮的功能是在终端中使用 logs
功能:
pm2 logs [--raw]
这将直播所有日志。其他方便的命令是:
pm2 flush
pm2 reloadLogs
2017年更新
在执行pm2命令时将日志路径定义为参数(-l
、-o
、-e
)非常好用,通常是最好的选择。
但是,如果你不想每次执行pm2时都定义日志路径,你可以生成一个配置文件,定义error_file
和out_file
,然后从中启动pm2:
生成配置文件:
pm2 ecosystem simple
。这将生成一个文件ecosystem.config.js
,内容如下:module.exports = { apps : [{ name : "app1", script : "./app.js" }] }
在文件中定义
error_file
(错误日志)和out_file
(信息日志),如:module.exports = { apps : [{ name : "app1", script : "./app.js", error_file : "./err.log", out_file : "./out.log" }] }
从配置文件启动进程:
pm2 start ecosystem.config.js
这样,日志就保存到./err.log
和./out.log
.
详情请参考document
如果是新的开始,你只需:
- 运行
pm2 start/reload ecosystem.config.js [--only your_app]
但是当它已经启动时(pm2 已经在管理它)你必须做(有人可以找到更好的方法,但这对我有用):
- 运行
pm2 delete your_app
- 运行
pm2 start