回答:
JSONロギングを使用すると、形式が時間とともに変更された場合でも、プログラムでログファイルを解析できます。
良い例は、Apacheログです。デフォルトでは、Apacheはcommon
access.logの形式を使用します。
"%h %l %u %t \"%r\" %>s %b"
これらのログファイルの1つを取得し、そこから統計情報を計算するオフラインパーサーを構築したとします。
しばらくすると、アプリケーションにサブドメインを導入virtual_host
し、ログに追加します(サブドメインの1つで問題が発生した場合にデバッグできるように)。
"%v %h %l %u %t \"%r\" %>s %b"
パーサーはを使用しませんvirtual_hosts
が、それでもパーサーを以下に適合させる必要があります。
%v
の先頭に注意してください)ただし、JSONでログインすると、パーサーは追加されたフィールドに気付くことさえなく、古いログだけでなく新しいログも喜んで解析できます。そして、他のパーサーは、追加されたフィールドが存在する場合、それを利用でき ます。
そしてもちろん、 JSONのregexps
解析は、文字列ログの解析に書き込むよりも簡単です。
マシンがその限界に近づいて動作し、そのような問題が実際に問題になる場合、より深刻な問題が発生している可能性があります。これにより何らかの違いが生じる例外的な状況もありますが、多くのアプリケーション(ほとんどの場合)は、JSON、単純なテキスト、またはレコードをデータベースに記録する場合の違いがまったく関係ないマシンで実行されます。とにかくほとんどの場合、オブジェクト、文字列、その他の変換を行う必要があります(生のバイナリをログに記録しますか?)。それを見ることができないかもしれません。
このためにパフォーマンス評価が必要な場合は、コードを実行するマシン上で、毎日使用するプログラミング環境で自分で評価する必要があります。大きなオーバーヘッドが発生する場合や、何らかのオーバーヘッドが発生する場合は、多くのことに依存します。たとえば、Ruby on RailsでWebサイトを作成する場合、ほとんどの場合、データはハッシュになります。これをJSONに変換すると、内部表現は作成するものからそれほど遠くないため(ほとんどの場合、 Railsコードがそのようなオブジェクトやデータ構造を常に放り投げるために)。
利点は、ツールによっても異なります。ライブラリにJSONが組み込まれている場合は、JSONを簡単に読み取って、何らかの形式で表示できます。繰り返しますが、例として、Webサイトの管理インターフェイスがあり、JSONに保存されたログ情報を表示したい場合、RubyでHTMLとして1行のコードでこれを読み取って表示できます。