Tomcat日誌

Tomcat的日誌

  • Tomcat的日誌在/usr/local/tomcat/log/目錄下
[root@localhost logs]# ls
catalina.2019-02-25.log  catalina.out                 host-manager.2019-02-26.log  localhost.2019-02-26.log             localhost_access_log.2019-02-26.txt  manager.2019-02-26.log
catalina.2019-02-26.log  host-manager.2019-02-25.log  localhost.2019-02-25.log     localhost_access_log.2019-02-25.txt  manager.2019-02-25.log
  • 在這個目錄下有這麼多日誌文件,當咱們遇到問題時應該查看哪一個呢?
  • 遇到問題查看catalina.out ,這個日誌是核心日誌,不管正確或者錯誤的訪問信息,無論是Tomcat服務自己仍是Tomcat上跑的應用(如zrlog)產生的日誌都會記錄到這個日誌裏。
  • 兩個manager日誌是管理臺相關的日誌,不用關注。
  • access_log是訪問日誌,記錄的是客戶訪問站點的狀況,這個日誌也能夠不用讓它記錄,而是在nginx代理上記錄訪問信息,因此也不用關注。
  • 這個帶日期的catalina.xxxx-xx-xx.log是catalina引擎相關的日誌,能夠認爲是Tomcat服務自己的日誌,這個也不用關注,由於它和catalina.out是重複的,也就是說這個日誌中記錄的內容在catalina.out這個日誌中就有。
  • localhost.xxxx-xx-xx.log,它主要是應用初始化(listener,filter,servlet)未處理的異常最後被Tomcat捕獲而輸出的日誌,也不用太關注

日誌配置文件conf/logging.properties

  • 這裏面主要定義了非訪問日誌的一些屬性,好比日誌路徑、哪些日誌記錄到哪一個文件中(名字)、日誌級別、存儲週期等信息,這個配置文件咱們通常都不會去更改。而訪問日誌的格式、路徑是在server.xml中定義的,以下是server.xml配置文件中爲訪問日誌的配置片斷:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

catalina.out文件並無日期後綴,意味着該文件不會自動切割,它會越寫越大,直到將硬盤的容量寫滿,解決這個問題的辦法有兩個。

一:新增一個計劃任務,每隔一段時間就清空該文件。

crontab的任務計劃格式

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)                   ##分
# |  .------------- hour (0 - 23)					##時
# |  |  .---------- day of month (1 - 31)			##日
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...	##月
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR	##周 sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed			##執行的命令
  • 定時清空catalina.out
[root@localhost etc]# crontab -l
0 0 */5 * * echo "" > /usr/local/tomcat/logs/catalina.out

補充:

  • 有兩個文件能夠控制crontab可否被其餘用戶使用,/etc/cron.deny 和/etc/cron.allow 系統默認保留的是/etc/cron.deny,最好選擇一個使用,避免邏輯混亂。若是不想用戶lic使用crontab功能,能夠將lic添加到/etc/corn.deny文件中。nginx

  • crontab命令apache

  • crontab -u 只有root用戶可以使用該參數,也就是幫其餘用戶添加刪除crontab任務計劃tomcat

  • crontab -e 編輯crontab的工做內容bash

  • crontab -l 查閱crontab的工做內容工具

  • crontab -r 刪除全部的crontab的內容,若是要刪除一項,能夠使用crontab -e去刪除一項。代理

  • 使用crontab來新建了任務計劃以後,該項計劃就會被記錄到/var/spool/cron裏面,且是以帳號來判別的。好比,root用戶建了任務計劃就會被寫到/var/spool/cron/root中;另外cron執行的每一項工做都會被寫到/var/log/cron這個日誌文件中,因此若是不知道系統是否被惡意運行過cron ,能夠查看該日誌文件。日誌

二:用系統自帶的logrotate工具切割

  • 在logrotate.d下建立Tomcat的切割配置文件。
vi /etc/logrotate.d/tomcat
  • 在配置文件中添加以下內容
/usr/local/tomcat/logs/catalina.out  {
    copytruncate    # 建立新的catalina.out副本後,截斷源catalina.out文件
    daily    # 天天進行catalina.out文件的輪轉
    rotate 7     # 至多保留7個副本
    missingok    # 若是要輪轉的文件丟失了,繼續輪轉而不報錯
    compress     # 使用壓縮的方式(節省硬盤空間)
    size 16M     # 當catalina.out文件大於16MB時,就輪轉
    }
相關文章
相關標籤/搜索