🐙
PM2とbunyanを共存させる方法
JavaScriptでBotを作ったので、クラッシュしてもちゃんと再起動してくれるようにしたいな~と思っていたらPM2(foreverが主流かと思ってたらあっちは非推奨になってた)があったので使ってみたら、bunyanのログをパースできないことに気づいたのでそのやり方を備忘録的に書きます。
PM2とは
Process Manager 2の略らしい。
とにかくJavaScriptのアプリケーションをProcessとして起動、管理するのに特化しているツールです。
アプリケーションを編集したら自動再起動とか、アプリケーションがクラッシュしたら自動再起動とか、とりあえずめちゃ便利なツール。
bunyanとは
JavaScriptのロガー
ちょっと特殊で、標準ストリームへの出力はJson形式になっている。
それをbunyanでパースして、きれいなログに整形、出力する。
ログがJson出力されるので、あとから整形、解析するのに非常に便利
今回やりたいこと
PM2は pm2 log [アプリ名]
でアプリのログを確認できるのですが、それをbunyanでパースしたい。
しかし、PM2はログの前にアプリ名を表示するので、bunyanでパースできない。
↑こんな感じになる
これを、bunyanでしっかりパースしたい
やり方
ログを生データで出力するオプションを利用する。
実はこのオプション、私と同じbunyanを利用したい人がissueを開き実装されたもの。
「-r -raw
みたいなオプションあったら便利よね」
実装されたPR
「完璧に動作するぜ!」
こちらの流れにある通り、pm2 log [アプリ名] --raw
が動作するので、以下のようにすればbunyanが使えます。
pm2 log [アプリ名] --raw | bunyan
以上
Discussion