web-dev-qa-db-ja.com

コンソールにpm2ログを作成する

Pm2を使用してノードWebサーバーを実行しています。 pm2は別のプロセスを生成し、stdoutとstderrをファイルにリダイレクトするため、ログのどこかを探す必要があります。理想的には、pm2を実行したのと同じコンソールウィンドウにノードプロセスの出力を持たせたいと思います。そうでなければ、pm2がアクティブなコンソールウィンドウでノードプロセスを実行し、ノードプロセスのstdoutとstderrがそのコンソールウィンドウに書き込むようにします。どうすればこれを達成できますか? Windowsマシンを使用しています。

21
Fragilerus

コマンドpm2 logsまたはpm2 logs [app-name]によってデーモン化されて実行されているプロセスのstdoutおよびstderrも表示できると思います。

46
Timothy Vann

答えが見つかりました(そのドキュメントはそれほど素晴らしいものではありません)、--no-daemonフラグ、それを行ったようです。ただし、最初のアップタイムでは(フラグを使用している場合でも)ファイルにログを記録しているようです。プロセスが再起動されると(ファイルの変更を監視しています)、コンソールへのログアウトが開始されます

10
Fragilerus

プログラムで次のようなことができます:

const pm2 = require('pm2')

pm2.connect(function(err) {
  if (err) {
    console.error(err);
    process.exit(2);
  }
  pm2.start([
    {
      script             : "server.js",
    },
  ]
    , function(err, proc) {
      if(err) {
        throw err
      }
    });

  pm2.launchBus((err, bus) => {
    // this part is important
    bus.on('log:out', data => {
      console.log(data.data);
    });
    bus.on('log:err', data => {
      console.log(data.data);
    });
  });
})
0
kharandziuk