ログファイルは、深刻なアプリケーションの重要な部分です。アプリへのログインが適切であれば、どの主要なイベントがいつ発生したかを確認できます。発生したエラー。問題について聞いて、アプリケーションの組み込み診断を確認する(Webコンソールを開くか、JMXなどの診断ツールを使用する)のが一般的です。ログファイル。
非テキスト形式を使用している場合、すぐにハードルに直面します。バイナリログをどのように読みますか?本番サーバーにはないログ読み取りツールを使用して!またはそれは、しかし、ああ、親愛なる、我々は新しいフィールドを追加しました、そして、これは古い読者です。これをテストしませんでしたか?はい、しかし誰もそれをここに展開しませんでした。その間、ユーザーがpingを実行すると画面が明るくなり始めます。
または、これはアプリではないかもしれませんが、サポートを行っているので、この他のシステムとWTFであることを知っていると思いますか?ログはバイナリ形式ですか?OK、ウィキページを読み始めて、どこから始めますか?これで、ローカルマシンにコピーしましたが、破損していますか?何らかの非バイナリ転送を行いましたか?または、ログ読み取りツールが台無しになっていますか?
要するに、テキスト読み取りツールはクロスプラットフォームでユビキタスであり、ログはしばしば長命であり、急いで読む必要がある場合があります。バイナリ形式を発明すると、十分に理解された使いやすいツールの世界から切り離されます。必要なときに機能が大幅に失われる。
ほとんどのロギング環境は妥協点にぶつかります。現在のログを読み取り可能にして存在させ、古いログを圧縮します。つまり、圧縮のメリットを享受できるということです。実際には、バイナリ形式ではログメッセージが圧縮されないためです。同時に、lessとgrepなどを使用できます。
それでは、バイナリを使用することでどのような利点が得られるでしょうか?少量のスペース効率-ますます重要ではありません。書き込みが少ない(または小さい)まあ、おそらく-実際には、書き込みの数はディスクコミットの数に関連するため、ログラインがディスクのブロックサイズよりも大幅に小さい場合、SSDはとにかく新しいブロックを割り当てます。したがって、次の場合はバイナリが適切な選択です。
- 大量の構造化データを書いている
- ログは特に迅速に作成する必要があります
- 「サポート条件」の下でそれらを分析する必要はほとんどありません
しかし、これはアプリケーションのロギングとは思えません。これらは出力ファイルまたはアクティビティレコードです。それらをファイルに入れることは、おそらくデータベースへの書き込みからわずか1ステップの距離です。
編集
ここでは、「プログラムログ」(ロギングフレームワークごと)と「レコード」(アクセスログ、ログインレコードなど)の間に一般的な混乱があると思います。質問は後者に最も密接に関係していると思われ、その場合、問題はあまり明確に定義されていません。特にトラブルシューティングではなく、明確に定義されて分析に使用される可能性が高いため、メッセージレコードまたはアクティビティログがコンパクトな形式であることは完全に受け入れられます。これを行うツールにはtcpdump
、Unixシステムモニターが含まれsar
ます。一方、プログラムログはアドホックになりがちです。