Подтвердить что ты не робот

Пользовательское ведение журнала под pm2

У меня есть полезная регистрация в моем приложении node, которое я пишу на 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.

4b9b3361

Ответ 1

При работе с pm2 ваши журналы приложений будут находиться в $HOME/.pm2/logs, как описано здесь. Проверяя это локально с помощью простого файла index.js, который выводит 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

Ответ 2

Отличная функция - использовать функцию logs в терминале:

pm2 logs [--raw]

это будет транслировать все логи. Другие удобные команды:

  • pm2 flush
  • pm2 reloadLogs

Ответ 3

Обновление в 2017 году.

Определить путь журнала как параметр, когда выполняется команда pm2 (-l, -o, -e), очень проста в использовании и обычно является лучшим выбором.

Однако, если вы не хотите определять путь к журналу каждый раз, когда выполняется pm2, вы можете создать файл конфигурации, определить error_file и out_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.

Подробнее см. документ.

Ответ 4

В случае нового старта вы просто:

  • запустите pm2 start/reload ecosystem.config.js [--only your_app]

Но когда он уже запущен (pm2 уже управляет им), вам нужно сделать (кто-то может найти лучший способ, но это работает для меня):

  • запустить pm2 delete your_app
  • запустить pm2 start