Pm2を使用してノードWebサーバーを実行しています。 pm2は別のプロセスを生成し、stdoutとstderrをファイルにリダイレクトするため、ログのどこかを探す必要があります。理想的には、pm2を実行したのと同じコンソールウィンドウにノードプロセスの出力を持たせたいと思います。そうでなければ、pm2がアクティブなコンソールウィンドウでノードプロセスを実行し、ノードプロセスのstdoutとstderrがそのコンソールウィンドウに書き込むようにします。どうすればこれを達成できますか? Windowsマシンを使用しています。
コマンドpm2 logs
またはpm2 logs [app-name]
によってデーモン化されて実行されているプロセスのstdoutおよびstderrも表示できると思います。
答えが見つかりました(そのドキュメントはそれほど素晴らしいものではありません)、--no-daemon
フラグ、それを行ったようです。ただし、最初のアップタイムでは(フラグを使用している場合でも)ファイルにログを記録しているようです。プロセスが再起動されると(ファイルの変更を監視しています)、コンソールへのログアウトが開始されます
プログラムで次のようなことができます:
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);
});
});
})