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运行状态。