1. 准备工作:确认Tomcat配置文件路径
Debian系统下,Tomcat的默认安装路径通常为/opt/tomcat/(或通过apt安装的/var/lib/tomcatX/,X为版本号),核心配置文件位于${CATALINA_BASE}/conf/目录(${CATALINA_BASE}即Tomcat安装目录)。需确认以下文件存在:
logging.properties(控制Java Util Logging日志)server.xml(控制HTTP访问日志)2. 配置Java Util Logging(默认日志框架)
logging.properties是Tomcat默认的日志配置文件,需调整以下关键项:
1catalina.org.apache.juli.FileHandler.directory为自定义目录(如${catalina.base}/logs),确保Tomcat用户对该目录有写权限(sudo chown -R tomcat:tomcat ${CATALINA_BASE}/logs)。FINEST→FINER→FINE→CONFIG→INFO→WARNING→SEVERE→OFF)。例如,开启详细调试信息:org.apache.catalina.level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
java.sql.ConnectionPool.level = FINE # 数据库连接池日志
java.util.logging.ConsoleHandler.formatter或1catalina.org.apache.juli.FileHandler.formatter,使用java.util.logging.SimpleFormatter或org.apache.juli.OneLineFormatter(单行格式更易读)。例如:java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
org.apache.juli.OneLineFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s [%2$s] %5$s%6$s%n # 格式:时间 日志级别 [线程名] 日志消息
3. 配置访问日志(记录HTTP请求)
通过server.xml中的AccessLogValve配置访问日志,需修改directory、prefix、suffix和pattern参数:
<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"" # 包含IP、方法、URL、状态码、Referer等信息
resolveHosts="false"/>
pattern常用变量:%h(客户端IP)、%r(请求行)、%s(响应状态码)、%b(发送字节数)、%{User-Agent}i(浏览器信息)。4. 启用日志轮转(避免文件过大)
使用logrotate工具定期压缩、删除旧日志,配置文件位于/etc/logrotate.d/tomcat:
/opt/tomcat/logs/catalina.out {
daily # 每天轮转
rotate 14 # 保留14个备份
compress # 压缩旧日志(gzip)
delaycompress # 延迟压缩(避免当天日志未写完)
missingok # 日志不存在时不报错
notifempty # 日志为空时不轮转
copytruncate # 复制日志后清空原文件(不影响Tomcat运行)
create 640 tomcat adm # 创建新日志文件并设置权限
}
此配置会自动处理catalina.out(主日志文件),也可扩展至localhost.log、manager.log等。
5. 可选:切换至Logback/Log4j(更灵活的日志框架)
若需更强大的日志功能(如异步日志、动态配置),可将默认的Java Util Logging替换为Logback或Log4j:
logback-core、logback-classic和tomcat-juli-adapter.jar,放入${CATALINA_BASE}/lib/目录。lib/目录下创建logback.xml,配置滚动策略、输出格式等:<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/tomcat.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/tomcat.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> # 保留30天日志
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</configuration>
logging.properties,将处理器指向Logback:handlers = 1catalina.org.apache.juli.FileHandler
1catalina.org.apache.juli.FileHandler.level = INFO
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.formatter = ch.qos.logback.classic.PatternLayout
6. 验证配置
sudo systemctl restart tomcat(或./shutdown.sh→./startup.sh)。${CATALINA_BASE}/logs下应生成catalina.out(主日志)、localhost_access_log.txt(访问日志)等文件,内容符合配置的格式和级别。logger.fine("Debug message")),确认是否输出到对应文件。注意事项
FINE或更低(会增加I/O开销),建议使用INFO或WARNING。chmod 640仅允许Tomcat用户和adm组读取)。df -h监控磁盘使用率)。