最近のバージョンは-F でformatを指定できるようになったけど、URLによってのアクセスログoff/on など柔軟に対応できないぽいのでnginx をfrontに置いてしまったほうが楽?
defaultのformatは'%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i" %{Varnish:time_firstbyte}x'
%r について
192.168.0.1 - - [14/Mar/2012:10:01:29 +0900] "GET http://192.168.0.100:6081/hoge.cgi?foo=bar HTTP/1.1" 200 547 "-" "user-agent"
このようにbackend serverまでログに出てしまうので、apacheのcombinedのようにしたい場合は%rの代わりに"%m %U%q %H" とすると良い。
192.168.0.1 - - [14/Mar/2012:10:01:29 +0900] "GET /hoge.cgi?foo=bar HTTP/1.1" 200 547 "-" "user-agent"
- option
- %m request method
- %U request URL without query string
- %q query string
- %H request protocol
- %{Varnish:time_firstbyte}x Time to the first byte from the backend arrived
-X の謎
-X regex Exclude log entries which match the specified regular expression.
とあるけど挙動がよくわからない。例えば、"-X 192.168.0.1" と設定したら、192.168.0.1 のIPからのアクセスは一切ログに出なくなった。
では、特定のURLだけログに出さないようにできるのかなと思って、"-X /foo/bar/" と設定して/foo/bar/ にアクセスしてみると、ログから/foo/bar/ が"-" に置換された以下のようなログになった。
192.168.0.1 - - [14/Mar/2012:09:59:36 +0900] "HEAD - HTTP/1.1" 200 0 "-" "user-aegent"
うーん、謎すぎる。