Ubuntu Tomcat配置访问日志记录步骤
访问日志的核心配置在Tomcat的server.xml文件中,需通过AccessLogValve阀门组件实现。操作步骤如下:
sudo nano ${CATALINA_HOME}/conf/server.xml(${CATALINA_HOME}为Tomcat安装目录,如/opt/tomcat)。<Host>标签(通常在文件末尾),在其内部添加以下配置(若已有则取消注释):<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="${catalina.base}/logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h %l %u %t \"%r\" %s %b %{Referer}i %{User-Agent}i"
resolveHosts="false"/>
directory:日志存储路径(${catalina.base}/logs为Tomcat默认日志目录,如/opt/tomcat/logs);prefix:日志文件前缀(如localhost_access_log.,生成的文件名为localhost_access_log.2025-10-13.txt);suffix:日志文件后缀(如.txt);pattern:日志格式(详见下文“自定义日志格式”);resolveHosts:是否解析主机名(设为false可提升性能,仅记录IP地址)。通过pattern属性可定义日志输出的字段,常用格式说明如下:
common):%h %l %u %t \"%r\" %s %b(记录客户端IP、标识、用户、时间、请求、状态码、响应大小);combined):%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"(在基础格式上增加引用页和User-Agent);%h %l %u %t \"%r\" %s %b %D %{User-Agent}i(增加请求处理时间%D,单位为毫秒)。为防止访问日志占用过多磁盘空间,需启用日志轮转功能:
AccessLogValve中添加rotatable="true"(默认开启)和maxDays="30"(保留30天日志):<Valve className="org.apache.catalina.valves.AccessLogValve"
...
rotatable="true"
maxDays="30"/>
sudo apt-get install logrotate;sudo nano /etc/logrotate.d/tomcat,添加以下内容:/opt/tomcat/logs/localhost_access_log.*.txt {
daily
rotate 7
compress
missingok
notifempty
create 640 tomcat tomcat
sharedscripts
postrotate
/bin/kill -USR1 $(cat /opt/tomcat/temp/tomcat.pid 2>/dev/null) 2>/dev/null || true
endscript
}
说明:每日轮转、保留7天、压缩旧日志、通过Tomcat PID发送信号触发日志切换。完成上述配置后,重启Tomcat服务:
sudo systemctl restart tomcat
验证日志是否生成:tail -f ${CATALINA_HOME}/logs/localhost_access_log.txt,访问Tomcat应用后,日志会实时输出访问信息。