溫馨提示×

tomcat日志配置centos指南

小樊
39
2025-09-24 07:06:49
欄目: 智能運維

Tomcat日志配置CentOS指南

一、Tomcat日志基礎認知

Tomcat的日志主要分為運行日志(記錄應用運行狀態、錯誤信息)和訪問日志(記錄HTTP請求詳情)。默認情況下,運行日志由logging.properties配置,訪問日志由server.xml配置,均存儲在${CATALINA_HOME}/logs目錄下(CATALINA_HOME為Tomcat安裝目錄)。

二、定位Tomcat日志文件

進入Tomcat的logs目錄,常見日志文件說明:

  • catalina.out:主運行日志,包含Tomcat啟動/停止信息、未捕獲的異常及運行時消息;
  • localhost.date.log:Tomcat內部組件(如JSP編譯、Servlet初始化)的日志;
  • manager/date.log:Tomcat Manager應用的訪問及操作日志;
  • host-manager/date.log:Tomcat Host Manager應用的日志;
  • localhost_access_log.date.txt:HTTP訪問日志(需通過server.xml開啟)。

三、實時查看與搜索日志

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"/>
  • directory:訪問日志存儲目錄(相對于CATALINA_HOME);
  • prefix:日志文件前綴(如localhost_access_log);
  • suffix:日志文件后綴(如.txt);
  • pattern:日志格式,常用占位符:
    • %h:客戶端IP地址;
    • %t:請求時間;
    • %r:請求行(如GET /index.html HTTP/1.1);
    • %s:響應狀態碼(如200、404);
    • %b:響應大?。ㄗ止潱?;
    • %D:請求處理時間(毫秒);
  • resolveHosts:是否解析客戶端主機名(false表示不解析,提升性能)。

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

若需要更強大的日志功能(如異步日志、日志分級存儲),可集成Log4j或Logback。

1. 集成Log4j2步驟

(1)添加依賴

下載Log4j2 JAR包(log4j-api-2.x.x.jar、log4j-core-2.x.x.jar、log4j-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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女