I have some useful logging in my node app that I write to console.log
node server.js >> /var/log/nodeserver.log 2>&1
In case of new start, you just:
pm2 start/reload ecosystem.config.js [--only your_app]
But when it is already started (pm2 already managing it) you have to do (someone can find a better way, but this works for me):
pm2 delete your_app
pm2 start
One nifty feature is to use the logs feature in terminal:
pm2 logs [--raw]
this will live stream the all the logs. Other handy commands are:
pm2 flush
pm2 reloadLogs
When running with pm2 your application logs will reside in $HOME/.pm2/logs
as described here. Verifying this locally with a simple index.js
file that outputs console.log('test')
$ 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
Notice how I see no console.log
output here, but, if I navigate to $HOME/.pm2/logs
I see
logs $ ls
index-error-0.log index-out-0.log
logs $ cat index-out-0.log
test
Update in 2017.
Define log path as parameter when pm2 command is executed (-l
, -o
, -e
) is very easy to use and normally is the best choice.
However, if you don't want to define log path every time when pm2 is executed, you can generate a configuration file, define error_file
and out_file
, and start pm2 from that:
Generate a configuration file: pm2 ecosystem simple
. This would generate a file ecosystem.config.js
, with following content:
module.exports = {
apps : [{
name : "app1",
script : "./app.js"
}]
}
Define error_file
(for error log) and out_file
(for info log) in the file, such as:
module.exports = {
apps : [{
name : "app1",
script : "./app.js",
error_file : "./err.log",
out_file : "./out.log"
}]
}
Start the process from the configuration file:
pm2 start ecosystem.config.js
In this way, the logs are saved to ./err.log
and ./out.log
.
Please refer to the document for detail information.