首页 文章

pm2下的自定义日志记录

提问于
浏览
10

我在我的节点应用程序中有一些有用的日志记录,我写入 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 日志 .

4 回答

  • 0

    当使用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 输出, but ,如果我导航到 $HOME/.pm2/logs 我看到了

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

    一个漂亮的功能是在终端中使用logs功能:

    pm2 logs [--raw]
    

    这将直播所有日志 . 其他方便的命令是:

    • pm2 flush

    • pm2 reloadLogs

  • 5

    2017年更新 .

    执行pm2命令时,将日志路径定义为参数( -l-o-e )非常容易使用,通常是最佳选择 .

    但是,如果您不想在每次执行pm2时定义日志路径,则可以生成配置文件,定义 error_fileout_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 .

  • 2

    如果是新的开始,你只需:

    • run "pm2 start/reload ecosystem.config.js [--only your_app]"

    但是当它已经开始(pm2已经管理它)你必须做(有人可以找到更好的方法,但这适用于我):

    • run "pm2 delete your_app"

    • 运行"pm2 start"

相关问题