centos

tomcat日志配置centos指南

小樊
43
2025-09-24 07:06:49
栏目: 智能运维

Tomcat日志配置CentOS指南

一、Tomcat日志基础认知

Tomcat的日志主要分为运行日志(记录应用运行状态、错误信息)和访问日志(记录HTTP请求详情)。默认情况下,运行日志由logging.properties配置,访问日志由server.xml配置,均存储在${CATALINA_HOME}/logs目录下(CATALINA_HOME为Tomcat安装目录)。

二、定位Tomcat日志文件

进入Tomcat的logs目录,常见日志文件说明:

三、实时查看与搜索日志

1. 实时查看运行日志

使用tail -f命令跟踪catalina.out的最新内容:

cd $CATALINA_HOME/logs
tail -f catalina.out

Ctrl+C停止跟踪。

2. 搜索特定时间段日志

使用sed命令截取指定时间范围的日志(例如2025-09-01至2025-09-02):

sed -n "/2025-09-01/,/2025-09-02/p" catalina.out > /tmp/tomcat_specific_logs.txt

将结果保存到/tmp/tomcat_specific_logs.txt中。

3. 使用journalctl查看Systemd日志

若Tomcat以Systemd服务运行(默认方式),可通过以下命令查看服务日志:

journalctl -u tomcat -f

-f参数表示实时跟踪,-u tomcat指定服务名称(需与systemctl start tomcat中的服务名一致)。

四、日志轮转配置(防止日志过大)

1. 使用logrotate工具

Tomcat默认的日志轮转配置文件位于/etc/logrotate.d/tomcat,编辑该文件调整规则(示例):

/var/log/tomcat/catalina.out {
    daily          # 每天轮转
    rotate 7       # 保留最近7天的日志
    compress       # 压缩旧日志(生成.gz文件)
    missingok      # 若日志文件不存在也不报错
    notifempty     # 若日志为空则不轮转
    create 0640 tomcat tomcat  # 创建新日志文件,权限0640,属主属组为tomcat
    postrotate
        /bin/kill -HUP `cat /var/run/tomcat.pid` 2>/dev/null || true  # 通知Tomcat重新打开日志文件
    endscript
}

2. 手动触发轮转

修改配置后,可通过以下命令立即执行轮转:

logrotate -f /etc/logrotate.d/tomcat

3. 自定义脚本轮转(可选)

若需更灵活的控制(如按大小轮转),可编写脚本tomcatLog.sh

#!/bin/bash
DIR="/opt/tomcat/logs"
LOGS="$DIR/catalina.out"
DATE=$(date +%Y-%m-%d)
BACKUP_FILE="$DIR/catalina.$DATE.bak"
ARCHIVE_FILE="$DIR/catalina.$DATE.tar.gz"

if [ -d "$DIR" ]; then
    cd "$DIR"
    cp "$LOGS" "$BACKUP_FILE"  # 备份原日志
    tar -czf "$ARCHIVE_FILE" "$BACKUP_FILE"  # 压缩备份
    rm -f "$BACKUP_FILE"  # 删除备份文件
    > "$LOGS"  # 清空原日志
else
    echo "Directory does not exist: $DIR"
fi

赋予执行权限并添加定时任务(每天凌晨2点执行):

chmod +x $DIR/tomcatLog.sh
crontab -e
# 添加以下行
0 2 * * * $DIR/tomcatLog.sh

五、日志级别设置(控制日志详细程度)

Tomcat使用java.util.logging框架,日志级别从低到高为:SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST。级别越高,日志越详细。

1. 修改logging.properties文件

编辑${CATALINA_HOME}/conf/logging.properties,调整以下配置:

# 全局日志级别(默认INFO)
.level=INFO

# 控制台日志级别(默认INFO)
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

# 文件日志级别(默认INFO)
java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.pattern=%h/tomcat/logs/app.%u.%g.log
java.util.logging.FileHandler.limit=50000  # 单个日志文件最大50MB
java.util.logging.FileHandler.count=10    # 保留10个备份文件
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

# 特定组件的日志级别(如localhost)
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level=INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers=2localhost.org.apache.juli.AsyncFileHandler

2. 重启Tomcat生效

修改完成后,重启Tomcat使配置生效:

systemctl restart tomcat

六、访问日志配置(记录HTTP请求)

访问日志默认未开启,需通过server.xml配置。编辑${CATALINA_HOME}/conf/server.xml,找到<Host>标签,添加或修改AccessLogValve配置:

<Valve className="org.apache.catalina.valves.AccessLogValve" 
       directory="logs" 
       prefix="localhost_access_log" 
       suffix=".txt" 
       pattern="%h %l %u %t "%r" %s %b %D" 
       resolveHosts="false"/>

七、集成第三方日志框架(可选)

若需要更强大的日志功能(如异步日志、日志分级存储),可集成Log4j或Logback。

1. 集成Log4j2步骤

(1)添加依赖

下载Log4j2 JAR包(log4j-api-2.x.x.jarlog4j-core-2.x.x.jarlog4j-jul-2.x.x.jar),放入${CATALINA_HOME}/lib目录。

(2)移除冲突JAR包

删除${CATALINA_HOME}/bin/tomcat-juli.jar${CATALINA_HOME}/lib/tomcat-juli-adapters.jar(避免与Log4j冲突)。

(3)创建Log4j配置文件

${CATALINA_HOME}/lib目录下创建log4j2.xml,示例配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
        </Console>
        <RollingFile name="File" fileName="${catalina.base}/logs/app.log"
                     filePattern="${catalina.base}/logs/app-%d{yyyy-MM-dd}.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
            <DefaultRolloverStrategy max="7"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>
</Configuration>

(4)重启Tomcat

systemctl restart tomcat

八、注意事项

  1. 权限问题:确保Tomcat用户(通常为tomcat)对日志目录有读写权限;
  2. 磁盘空间:定期清理旧日志,避免占用过多磁盘空间;
  3. 备份策略:重要日志需定期备份到远程存储(如NFS、S3);
  4. 性能影响:高频日志(如FINEST级别)可能影响Tomcat性能,生产环境建议使用INFOWARNING级别。

0
看了该问题的人还看了