2017-06-08 4 views
-1

私はノードバックエンドを持つWebアプリケーションを持っています。私は今バックエンドを終えています。私はどのようなログを取るべきかと思っていました。特に、Logglyのようなものをローカルに、またはリモートの場所にログするかどうか。私が遠隔地に行きたい理由は、使いやすさです。端末の代わりにブラウザからすべてのログを見ることができます。私は自分自身でWebインターフェイスを実装するにはあまりにも多くのものを持っています。私はちょうど1つの疑問を持っています。私が何かログを記録すると、サーバにリクエストを送信する必要があります。ローカルロギングよりもサーバーに負荷がかかりませんか?それとも完全に無視できるのでしょうか?また、ネットワークが故障したらどうしますか?接続に失敗した場合のためにローカルロギングも設定する必要がありますか?ローカルログとリモートサービスの使用

+0

はい、はい、はい、多分、修正できました、回避できました、はい。または...多分反対の –

答えて

2

あなたの質問は意見のベースとして多少閉鎖される危険がありますが、私はそれが役立つことを希望して回答します。

この時点で、私のgo-toアーキテクチャは12要素のアプリケーション(12factor.net)に基づいています。

これらの原則に従えば、ロギングの場所などはアプリケーション自体の懸念事項ではないことがわかります。 stdoutとstderrにログを記録し、アプリケーションがそれを忘れるようにします。

このようにすれば、あなたの環境は帯域外ログの処理方法を考えることができます。ほとんどの場合、私はホストベースのログ送付者にログをELKスタックまたはSplunkまたはLogglyなどに送信させます。問題はありませんが、ポイントは、ロギングがビジネスではないため、アプリが気にしない(そして、そうすべきではない)ことです。

+0

この男を聞く。アプリをstdout、stderrにして、それを忘れさせてください。ログデーモンはあなたが好きな場所にそれを出荷させてください。 –

+0

チップをありがとう。私はforever-monitorを使用すると思います。これはクラッシュを監視し、コンソール出力を監視する独立したノードプロセスですので、そこからログを送信します。 –

+0

実際これについてもっと考えています。なぜアプリケーションからログを記録しないのですか?それは私にはるかに柔軟性を与えます。もっとコードがあるようではなく、自分のモジュールを作成してmyLogger( 'message'、{someData:true})のように使うことができます。そしてstdoutが私に与える柔軟性は、console.log(JSON.stringify({message: 'message'、data:{someData:true})のようなものです。アプリの外側にあるjsonをもう一度解析します。 –

関連する問題