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_apppm2 startOne 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 flushpm2 reloadLogsWhen 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.