custom logging under pm2

前端 未结 4 2431
没有蜡笔的小新
没有蜡笔的小新 2021-02-20 14:32

I have some useful logging in my node app that I write to console.log

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

相关标签:
4条回答
  • 2021-02-20 14:35

    In case of new start, you just:

    • run 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):

    • run pm2 delete your_app
    • run pm2 start
    0 讨论(0)
  • 2021-02-20 14:44

    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
    0 讨论(0)
  • 2021-02-20 14:51

    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
    
    0 讨论(0)
  • 2021-02-20 14:54

    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:

    1. 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"
        }]
      }
      
    2. 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"
        }]
      }
      
    3. 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.

    0 讨论(0)
提交回复
热议问题