web-dev-qa-db-ja.com

Awstats logformatのタイプミス?

私はしばらくawstatsのドキュメントを読んでいますが、Logformatで失敗しているようです。

私はawstatsで以下を使用しています、

LogFormat = "%Host - - %Host_r %time1 %methodurl %code %bytesd %refererquot %uaquot %otherquot"

(nginxから)

 log_format   main
'$remote_addr - $remote_user [$time_local] $request '
    '"$status" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log main;

サンプルヒット: http://Pastebin.com/raw.php?i=qD9PKN52

1
user66700

私はあなたが行方不明だと思います"ログ行のいくつかのオブジェクトの周りから、それらを必要としない他のオブジェクトの周りにあります。

試してみてください

 log_format   main
'$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log main;
1
user9517

それは本当だ。 $ statusから ""を削除し、それらを$ requestに配置すると、問題が解決するはずです。

また、私のようにすでに大量の「破損した」ログがある場合は、次のコマンドを実行できます。

sed -i "s/00\]\ /00\]\ \"/g" access.log

そして

sed -i "s/\(HTTP\/[0-9].[0-9]\)\ \"\([0-9][0-9][0-9]\)\"/\1\"\ \2/g" access.log

これにより、古いログがawstatsで使用できるようになります。

0
gelu