在 Debian 上配置 Tomcat 日志,主要涉及 Tomcat 自带日志(JULI)、Log4j / Logback 以及 systemd / journald 几个方面。下面按常见场景一步步说明。
Debian 下通过 apt 安装的 Tomcat(如 Tomcat 9/10):
/etc/tomcat9/
/var/log/tomcat9/
/etc/tomcat9/logging.properties
核心配置:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, \
2localhost.org.apache.juli.AsyncFileHandler, \
3manager.org.apache.juli.AsyncFileHandler, \
java.util.logging.ConsoleHandler
不同 Handler 对应不同日志文件:
| Handler | 日志文件 |
|---|---|
| catalina | catalina.%g.log |
| localhost | localhost.%g.log |
| manager | manager.%g.log |
示例:将 Catalina 日志改为 DEBUG
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
常用级别:
SEVERE(严重)WARNINGINFO(默认)FINE / FINER / FINEST(调试)1catalina.org.apache.juli.AsyncFileHandler.directory = /var/log/tomcat9
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
Tomcat 的 AccessLogValve 用于记录 HTTP 请求。
/etc/tomcat9/server.xml
在 <Host> 中添加:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
常用 pattern:
| 模式 | 说明 |
|---|---|
| common | %h %l %u %t "%r" %s %b |
| combined | 包含 Referer / User-Agent |
Tomcat 默认日志不适合复杂系统,生产环境通常切换为 Log4j2 或 Logback。
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.x</version>
</dependency>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/tomcat9/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/tomcat9/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</configuration>
Debian 使用 systemd 管理 Tomcat:
systemctl status tomcat9
journalctl -u tomcat9 -f
systemctl edit tomcat9
添加:
[Service]
StandardOutput=journal
StandardError=journal
Debian 默认已配置:
/etc/logrotate.d/tomcat9
常见配置:
/var/log/tomcat9/*.log {
daily
rotate 7
compress
missingok
notifempty
}
chown -R tomcat9:tomcat9 /var/log/tomcat9
在 catalina.sh 或 systemd 中设置:
-Dfile.encoding=UTF-8
如果你愿意,可以告诉我:
我可以给你一份 完整可用的配置文件示例。