Tomcat はたしか 7 から AccessLog Valve がデフォルトで有効になっていますがそのフォーマットは Apache httpd の common に近いものです。これを今時の LTSV にする方法をメモ。
これがデフォルト設定
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
pattern
を書き換えれば良いわけですが、server.xml は XML なので TAB は 	
とします。普通に TAB のコードを入れてもスペースになってしまいますし、\t
も使えません。Apache や nginx の用に改行を入れて見やすくすることもできなっぽい。
pattern="host:%h	time:%{yyyy-MM-dd hh:mm:ss}t	ident:%l	user:%u	method:%m	uri:%U%q	protocol:%H	status:%s	size:%B	referer:%{referer}i	ua:%{user-agent}i	msec:%D	thread:%I"
で次のように出力されます
host:127.0.0.1 time:2016-03-08 11:57:33 ident:- user:- method:GET uri:/favicon.ico protocol:HTTP/1.1 status:200 size:21630 referer:http://localhost:8080/ ua:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 msec:3 thread:http-bio-8080-exec-9
TAB を改行にして見やすくするとこんな内容
host:127.0.0.1
time:2016-03-08 11:57:33
ident:-
user:-
method:GET
uri:/favicon.ico
protocol:HTTP/1.1
status:200
size:21630
referer:http://localhost:8080/
ua:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36
msec:3
thread:http-bio-8080-exec-9
リクエスト時刻は %{xxx}t
で指定します。xxx
部分は SimpleDateFormat になります。time:%{yyyy-MM-dd'T'HH:mm:ss.SSSZ}t
と指定すれば time:2016-03-09T00:13:25.991+0900
のように出力されます。
http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Log_Valve
Ubuntu への Java のインストール方法はこちらを参照
How To Manually Install Oracle Java on a Debian or Ubuntu VPS