Tomcat解決catalina.out文件過大的問題
有用Tomcat的,絕對都會遇到這樣一個問題:catalina.out文件過大。
它是Tomcat默認(rèn)生成的日志文件,會隨著時間的推移,逐漸增大,不斷的增長,甚至達(dá)到幾G,幾十G的大小。由于文件過大,不僅占系統(tǒng)的存儲,我們還將無法使用過常規(guī)的編輯工具進(jìn)行查看,嚴(yán)重影響系統(tǒng)的維護(hù)工作。
對此,出現(xiàn)了以下幾種解決catalina.out文件過大的方案。
暴力型
除非不需要日志,否則不建議使用
1.手動版
每次監(jiān)控到tomcat的硬盤空間變小達(dá)到閾值,手動登陸服務(wù)器,切換到tomcat的logs下,手動清空
echo " " ?> catalina.out
2.腳本版
編寫腳本,放入計劃任務(wù)中,定時清空
crontab -e? 0 24 * * * ? ?sh /root/qin_catalina.out.sh vim qin_catalina.out.sh ?#!/usr/bin/bash? ?echo " " > catalina.out
技術(shù)型
1.日志切割工具版0.1
使用cronolog日志切分工具切分Tomcat的catalina.out日志文件
<1>下載cronolog,并進(jìn)行安裝
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz ? (中國服務(wù)器可能無法下載或下載緩慢,可先下載到境外服務(wù)器上) tar zxvf cronolog-1.6.2.tar.gz ./cronolog-1.6.2/configure make make install (默認(rèn)安裝在/usr/local/sbin下)
<2>.配置
在tomcat/bin/catalian.sh中
org.apache.catalina.startup.Bootstrap "$@" start \ >> "$CATALINA_BASE"/logs/catalina.out 2&1 & 改成: org.apache.catalina.startup.Bootstrap"$@" start \ |/usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null 2>&1 & 或 org.apache.catalina.startup.Bootstrap ? "$@" ?start ?2>&1 ?\ ? | ?/usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &? 并注釋 ? ?touch "$CATALINA_OUT" ?
<3>重啟Tomcat
Tomcat輸出日志文件分割成功,輸出log文件格式變?yōu)椋篶atalina.2017-05-15.out
1.日志切割工具版0.2
CentOS6.5后自帶logrotate程序,可以解決catalina.out的日志輪轉(zhuǎn)問題
<1>在/etc/logrotate.d/目錄下新建一個tomcat的文件
cat >/etc/logrotate.d/tomcat? /usr/local/tomcat/logs/catalina.out{ ? ? ? ? ? ?要輪轉(zhuǎn)的文件 ? ? copytruncate ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建新的catalina.out副本,截斷源catalina.out文件 ? ? daily ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每天進(jìn)行catalina.out文件的輪轉(zhuǎn) ? ? rotate 7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?至多保留7個副本 ? ? missingok ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文件丟失了,輪轉(zhuǎn)不報錯 ? ? compress ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用壓縮 ? ? size 500M ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當(dāng)catalina.out文件大于16MB,就輪轉(zhuǎn) }
其他參數(shù):
compress 通過gzip 壓縮轉(zhuǎn)儲以后的日志
nocompress 不做gzip壓縮處理
copytruncate 用于還在打開中的日志文件,把當(dāng)前日志備份并截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日志數(shù)據(jù)。
nocopytruncate 備份日志文件不過不截斷
create mode owner group 輪轉(zhuǎn)時指定創(chuàng)建新文件的屬性,如create 0777 nobody nobody
nocreate 不建立新的日志文件
delaycompress 和compress 一起使用時,轉(zhuǎn)儲的日志文件到下一次轉(zhuǎn)儲時才壓縮
nodelaycompress 覆蓋 delaycompress 選項,轉(zhuǎn)儲同時壓縮。
missingok 如果日志丟失,不報錯繼續(xù)滾動下一個日志
errors address 專儲時的錯誤信息發(fā)送到指定的Email 地址
ifempty 即使日志文件為空文件也做輪轉(zhuǎn),這個是logrotate的缺省選項。
notifempty 當(dāng)日志文件為空時,不進(jìn)行輪轉(zhuǎn)
mail address 把轉(zhuǎn)儲的日志文件發(fā)送到指定的E-mail 地址
nomail 轉(zhuǎn)儲時不發(fā)送日志文件
olddir directory 轉(zhuǎn)儲后的日志文件放入指定的目錄,必須和當(dāng)前日志文件在同一個文件系統(tǒng)
noolddir 轉(zhuǎn)儲后的日志文件和當(dāng)前日志文件放在同一個目錄下
sharedscripts 運行postrotate腳本,作用是在所有日志都輪轉(zhuǎn)后統(tǒng)一執(zhí)行一次腳本。如果沒有配置這個,那么每個日志輪轉(zhuǎn)后都會執(zhí)行一次腳本
prerotate 在logrotate轉(zhuǎn)儲之前需要執(zhí)行的指令,例如修改文件的屬性等動作;必須獨立成行
postrotate 在logrotate轉(zhuǎn)儲之后需要執(zhí)行的指令,例如重新啟動 (kill -HUP) 某個服務(wù)!必須獨立成
daily 指定轉(zhuǎn)儲周期為每天
weekly 指定轉(zhuǎn)儲周期為每周
monthly 指定轉(zhuǎn)儲周期為每月
rotate count 指定日志文件刪除之前轉(zhuǎn)儲的次數(shù),0 指沒有備份,5 指保留5 個備份
dateext 使用當(dāng)期日期作為命名格式
dateformat .%s 配合dateext使用,緊跟在下一行出現(xiàn),定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數(shù)
size(或minsize) log-size 當(dāng)日志文件到達(dá)指定的大小時才轉(zhuǎn)儲,log-size能指定bytes(缺省)及KB (sizek)或
<2>當(dāng)執(zhí)行以上操作時是自動執(zhí)行的,也可手動切割
logrotate /etc/logrotate.conf
如果只輪轉(zhuǎn)tomcat配置文件,要指定文件
logrotate --force /etc/logrotate.d/tomcat
<3>刪除要清理的日志
手工查找需要清理的日志文件
cd /usr/local/tomcat/logs rm -rf catalina.out.4.gz
2.日志切割腳本版
使用cron每天來定時備份當(dāng)前的catalina.out,然后清空他的內(nèi)容;
<1>crontab -e
01 0 * * * ?sh /root/qie_catalina.out.sh
<2>cat qie_catalina.out.sh 參考腳本
?#!/bin/bash? ?DATE=`date "+%Y-%m-%d"` cp /etc/tomcat/logs/catalina.out ?/etc/tomcat/logs/`catalina.out.$DATE` wait echo " " > catalina.out
3.修改日志級別版
日志級別:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)
<1>修改conf/logging.properties日志配置文件,將level級別設(shè)置成WARNING減少日志的輸出。也可以設(shè)置成OFF,直接禁用。
catalina.org.apache.juli.FileHandler.level = WARNING catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs catalina.org.apache.juli.FileHandler.prefix = catalina.
到此這篇關(guān)于Tomcat解決catalina.out文件過大的問題的文章就介紹到這了,更多相關(guān)Tomcat catalina.out文件過大內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。