在pm2下自定义日志logging

我有一些有用的日志logging在我写给console.log节点应用程序中

 node server.js >> /var/log/nodeserver.log 2>&1 

但是,当在pm2下尝试相同的时候:

 pm2 start server.js >> /var/log/pm2server.log 2>&1 

日志文件只显示pm2的启动信息

是应用程序日志尽可能与pm2 ? 在他们的页面上,他们讨论日志logging,并用"log message from echo.js"等文本显示图像,但是我没有看到将定制信息导入pm2日志

当使用$HOME/.pm2/logs运行时,您的应用程序日志将驻留在$HOME/.pm2/logs ,如此处所述。 用一个简单的index.js文件在本地validation它,输出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 

注意我在这里看不到console.log输出, 但是 ,如果我导航到$HOME/.pm2/logs我就会看到

 logs $ ls index-error-0.log index-out-0.log logs $ cat index-out-0.log test 

一个漂亮的function是使用terminal中的logsfunction:

 pm2 logs [--raw] 

这将生活stream所有的日志。 其他方便的命令是:

  • pm2 flush
  • pm2 reloadLogs

2017年更新。

当执行pm2命令时,将日志path定义为参数( -l-o-e )非常容易使用,通常是最好的select。

但是,如果每次执行error_file时不想定义日志path,则可以生成一个configuration文件,定义error_fileout_file ,然后从中启动error_file

  1. 生成configuration文件: pm2 ecosystem simple 。 这将生成一个文件ecosystem.config.js ,其中包含以下内容:

     module.exports = { apps : [{ name : "app1", script : "./app.js" }] } 
  2. 在文件中定义error_file (对于错误日志)和out_file (对于信息日志),例如:

     module.exports = { apps : [{ name : "app1", script : "./app.js", error_file : "./err.log", out_file : "./out.log" }] } 
  3. 从configuration文件启动进程:

     pm2 start ecosystem.config.js 

这样,日志就被保存到./err.log./out.log

有关详细信息,请参阅文档 。