ご挨拶、サー。 jsonログファイルの解析を手伝っていただけませんか。
ログ文字列の例:
{"ip": "176.122.232.00", "host": "cdn.tv.com", "path": "/dtv/c_1199622700411804.ts", "status": "200", "user_agent": "YX_XY/1.0.1.0.3364", "length": 1392120, "date": "2016-10-09T20:00:00+03:00"}
私はこのフォーマットを使用しています:
goaccess -f access.log --log-format='%^: "%h", %^:%^, %^: "%R", %^: %s, %^: "%u",%^: %b, %^: "%dT%t+%^"' --date-format='%Y-%m-%d' > /report.html
そして取得
Parsing... [1 734 743] [867 371/s]s]
GoAccess - version 0.8.5 - Dec 5 2014 06:36:01
Fatal error has occurred
Error occured at: goaccess.c - main - 832
Nothing valid to process
ログ形式の何が問題になっていますか?
ありがとう。
これは機能するはずです:
goaccess -f access.log --log-format='%^: "%h",%^: "%v",%^: "%U",%^: "%s",%^: "%u",%^: %b,%^: "%dT%t+%^"%^' --date-format='%Y-%m-%d' --time-format='%T' --http-protocol=no --http-method=no
返信ありがとうございます、
このエラーが発生しました
goaccess: unrecognized option '--time-format=%T'
(おそらく私は新しいバージョンを持っています)
次に、オプションの時間形式を削除し、さらに2つのエラーが発生しました。
goaccess: option '--http-protocol' doesn't allow an argument
goaccess: option '--http-method' doesn't allow an argument
このオプションをすべて削除すると、ようやくレポートが届きました。
ちなみに、このログ形式を後世に向けて説明していただけますか? :)
認識されないオプションについては、最新バージョンにアップグレードしてください。
すばらしい質問です。ログ形式で最も重要な部分の1つは、 %^
またはその他の指定子に続く文字です。 パーサーはその文字を検索します。たとえば、 %^:
がある場合、 :
が見つかるまでパーサーにすべてをスキップさせたいことを意味します。 これは非常に役立つので、フィールドを無視するために大量の%^
を使用する必要はありません。 今後のバージョンでは、ログ形式と一致しなかったトークンを表示することでこれをより適切に処理します。これにより、作業が簡単になります。
使用可能なログ指定子のリストについては、をご覧なってくださいこれを。
最も参考になるコメント
認識されないオプションについては、最新バージョンにアップグレードしてください。
すばらしい質問です。ログ形式で最も重要な部分の1つは、
%^
またはその他の指定子に続く文字です。 パーサーはその文字を検索します。たとえば、%^:
がある場合、:
が見つかるまでパーサーにすべてをスキップさせたいことを意味します。 これは非常に役立つので、フィールドを無視するために大量の%^
を使用する必要はありません。 今後のバージョンでは、ログ形式と一致しなかったトークンを表示することでこれをより適切に処理します。これにより、作業が簡単になります。使用可能なログ指定子のリストについては、をご覧なってくださいこれを。