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
监控磁盘使用率)。