Tomcat的日志分为核心日志(5类)和访问日志两类:
catalina
(Catalina引擎日志)、localhost
(Tomcat内部代码日志)、manager
(Tomcat管理应用日志)、host-manager
(虚拟主机管理日志),默认通过logging.properties
文件配置。server.xml
文件启用。确认Tomcat安装路径:
Debian系统下,Tomcat通常安装在/usr/share/tomcatX
(X为版本号,如9),$CATALINA_BASE
指向/var/lib/tomcatX
(日志、webapps等目录所在位置)。可通过以下命令确认:
sudo systemctl status tomcatX
输出中的“Main PID”路径即为$CATALINA_BASE
。
检查日志目录权限:
确保Tomcat用户(通常为tomcat
)对日志目录有读写权限:
sudo mkdir -p $CATALINA_BASE/logs
sudo chown -R tomcat:tomcat $CATALINA_BASE/logs
sudo chmod -R 755 $CATALINA_BASE/logs
logging.properties
文件位于$CATALINA_BASE/conf
目录,主要配置日志级别、处理器(输出位置)、格式等。
日志级别从高到低为:SEVERE
> WARNING
> INFO
> CONFIG
> FINE
> FINER
> FINEST
(ALL
表示输出所有日志,OFF
表示禁用)。
.level
配置项,修改为所需级别(如INFO
或FINE
):.level = INFO
catalina
、org.apache.catalina.authenticator
):org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
org.apache.catalina.authenticator.level = FINE
处理器决定日志的输出位置(控制台、文件)和格式。默认处理器为AsyncFileHandler
(异步文件输出),需修改其属性:
directory
设置为$CATALINA_BASE/logs
(推荐),避免权限问题:1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
prefix
定义文件名前缀(如catalina.
):1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
maxDays
设置日志文件保留天数(如90
天):1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
encoding
设置为UTF-8
,避免中文乱码:1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
java.util.logging.ConsoleHandler
配置:java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
修改完成后,保存文件并重启Tomcat使配置生效:
sudo systemctl restart tomcatX
访问日志记录HTTP请求详情,默认关闭。需编辑$CATALINA_BASE/conf/server.xml
文件,在<Host>
标签内添加或取消注释AccessLogValve
配置:
找到<Host>
标签(通常位于server.xml
末尾),添加以下内容:
<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"
resolveHosts="false"/>
directory
:日志文件存放目录(推荐${catalina.base}/logs
)。prefix
:日志文件名前缀(如localhost_access_log
)。suffix
:日志文件名后缀(如.txt
)。pattern
:日志格式,常用选项:
%h
:客户端IP地址(resolveHosts="false"
时)。%t
:请求时间(格式:EEE MMM dd HH:mm:ss yyyy
)。%r
:请求的第一行(方法+URI+协议,如GET /index.html HTTP/1.1
)。%s
:响应状态码(如200
、404
)。%b
:发送的字节数(不包括HTTP头,0
则显示-
)。%{User-Agent}i
:客户端浏览器信息(需用%{xxx}i
引用请求头)。resolveHosts
:是否将IP转换为域名(false
表示直接使用IP,提升性能)。若需记录更详细的访问信息(如引用页、用户代理),可将pattern
修改为:
pattern="%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i""
保存server.xml
文件,重启Tomcat使访问日志生效:
sudo systemctl restart tomcatX
查看核心日志:
使用tail
命令实时查看catalina
日志(默认路径:${catalina.base}/logs/catalina.out
):
tail -f $CATALINA_BASE/logs/catalina.out
若配置了文件处理器,可查看catalina.日期.log
文件。
查看访问日志:
访问Tomcat应用(如http://localhost:8080
),然后查看访问日志(路径:${catalina.base}/logs/localhost_access_log.日期.txt
):
tail -f $CATALINA_BASE/logs/localhost_access_log.txt
日志内容应包含客户端IP、请求时间、请求方法、响应状态码等信息。
为防止日志文件过大,可使用logrotate
工具定期轮转日志。
Debian系统默认安装logrotate
,若未安装,可通过以下命令安装:
sudo apt-get install logrotate
创建/etc/logrotate.d/tomcat
文件,添加以下内容:
$CATALINA_BASE/logs/catalina.out {
daily
rotate 14
compress
delaycompress
missingok
notifempty
copytruncate
}
$CATALINA_BASE/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
systemctl reload tomcatX >/dev/null 2>&1 || true
endscript
}
daily
:每天轮转一次。rotate 14
:保留14个备份(超过则删除)。compress
:压缩旧日志(使用gzip)。copytruncate
:复制日志文件后清空原文件(避免重启Tomcat)。postrotate
:轮转后重新加载Tomcat(确保日志继续输出到新文件)。手动触发轮转,检查是否生效:
sudo logrotate -vf /etc/logrotate.d/tomcat
验证$CATALINA_BASE/logs
目录下是否生成压缩的旧日志文件(如catalina.out.1.gz
)。
通过以上步骤,您可完成Debian系统下Tomcat日志的配置,实现日志级别调整、访问日志启用、日志轮转等功能,有效监控Tomcat运行状态。