JSP在Ubuntu上的日志管理实践
一 基础架构与日志来源
sudo tail -f /var/log/tomcat9/catalina.outsudo tail -f /var/log/syslog二 应用内日志框架选型与最小配置
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.x.x</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.x.x</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="File" fileName="jsp-logs.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
<%@ page import="org.apache.logging.log4j.LogManager" %>
<%@ page import="org.apache.logging.log4j.Logger" %>
<%
Logger logger = LogManager.getLogger(request.getServletPath());
logger.info("This is an info message from JSP page.");
logger.error("This is an error message.");
%>
三 将日志写入系统日志与集中化
SyslogHandler 指定 facility 为 LOCAL0–LOCAL7),Ubuntu 的 rsyslog 会按配置写入 /var/log/syslog 或自定义文件(在 /etc/rsyslog.d/ 添加规则)。四 日志轮转与保留策略
/var/log/myapp/*.log {
daily
rotate 30
compress
missingok
notifempty
create 0644 tomcat tomcat
postrotate
systemctl reload tomcat9 >/dev/null 2>&1 || true
endscript
}
五 日常运维与问题排查命令清单
sudo tail -f /var/log/tomcat9/catalina.outsudo tail -f /var/log/tomcat9/localhost.*.logsudo tail -f /var/log/syslogsudo systemctl status tomcat9sudo tail -f /var/log/tomcat9/catalina.out | grep -i error