Tomcat解決catalina.out文件過大的問題
前言
有用Tomcat的,絕對(duì)都會(huì)遇到這樣一個(gè)問題:catalina.out文件過大。
它是Tomcat默認(rèn)生成的日志文件,會(huì)隨著時(shí)間的推移,逐漸增大,不斷的增長(zhǎng),甚至達(dá)到幾G,幾十G的大小。由于文件過大,不僅占系統(tǒng)的存儲(chǔ),我們還將無法使用過常規(guī)的編輯工具進(jìn)行查看,嚴(yán)重影響系統(tǒng)的維護(hù)工作。
對(duì)此,出現(xiàn)了以下幾種解決catalina.out文件過大的方案。
暴力型
除非不需要日志,否則不建議使用
1.手動(dòng)版
每次監(jiān)控到tomcat的硬盤空間變小達(dá)到閾值,手動(dòng)登陸服務(wù)器,切換到tomcat的logs下,手動(dòng)清空
echo " " ?> catalina.out
2.腳本版
編寫腳本,放入計(jì)劃任務(wù)中,定時(shí)清空
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 ? (中國(guó)服務(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/目錄下新建一個(gè)tomcat的文件
cat >/etc/logrotate.d/tomcat? /usr/local/tomcat/logs/catalina.out{ ? ? ? ? ? ?要輪轉(zhuǎn)的文件 ? ? copytruncate ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建新的catalina.out副本,截?cái)嘣碿atalina.out文件 ? ? daily ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每天進(jìn)行catalina.out文件的輪轉(zhuǎn) ? ? rotate 7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?至多保留7個(gè)副本 ? ? missingok ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文件丟失了,輪轉(zhuǎn)不報(bào)錯(cuò) ? ? compress ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用壓縮 ? ? size 500M ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當(dāng)catalina.out文件大于16MB,就輪轉(zhuǎn) }
其他參數(shù):
compress 通過gzip 壓縮轉(zhuǎn)儲(chǔ)以后的日志
nocompress 不做gzip壓縮處理
copytruncate 用于還在打開中的日志文件,把當(dāng)前日志備份并截?cái)啵皇窍瓤截愒偾蹇盏姆绞?,拷貝和清空之間有一個(gè)時(shí)間差,可能會(huì)丟失部分日志數(shù)據(jù)。
nocopytruncate 備份日志文件不過不截?cái)?br />create mode owner group 輪轉(zhuǎn)時(shí)指定創(chuàng)建新文件的屬性,如create 0777 nobody nobody
nocreate 不建立新的日志文件
delaycompress 和compress 一起使用時(shí),轉(zhuǎn)儲(chǔ)的日志文件到下一次轉(zhuǎn)儲(chǔ)時(shí)才壓縮
nodelaycompress 覆蓋 delaycompress 選項(xiàng),轉(zhuǎn)儲(chǔ)同時(shí)壓縮。
missingok 如果日志丟失,不報(bào)錯(cuò)繼續(xù)滾動(dòng)下一個(gè)日志
errors address 專儲(chǔ)時(shí)的錯(cuò)誤信息發(fā)送到指定的Email 地址
ifempty 即使日志文件為空文件也做輪轉(zhuǎn),這個(gè)是logrotate的缺省選項(xiàng)。
notifempty 當(dāng)日志文件為空時(shí),不進(jìn)行輪轉(zhuǎn)
mail address 把轉(zhuǎn)儲(chǔ)的日志文件發(fā)送到指定的E-mail 地址
nomail 轉(zhuǎn)儲(chǔ)時(shí)不發(fā)送日志文件
olddir directory 轉(zhuǎn)儲(chǔ)后的日志文件放入指定的目錄,必須和當(dāng)前日志文件在同一個(gè)文件系統(tǒng)
noolddir 轉(zhuǎn)儲(chǔ)后的日志文件和當(dāng)前日志文件放在同一個(gè)目錄下
sharedscripts 運(yùn)行postrotate腳本,作用是在所有日志都輪轉(zhuǎn)后統(tǒng)一執(zhí)行一次腳本。如果沒有配置這個(gè),那么每個(gè)日志輪轉(zhuǎn)后都會(huì)執(zhí)行一次腳本
prerotate 在logrotate轉(zhuǎn)儲(chǔ)之前需要執(zhí)行的指令,例如修改文件的屬性等動(dòng)作;必須獨(dú)立成行
postrotate 在logrotate轉(zhuǎn)儲(chǔ)之后需要執(zhí)行的指令,例如重新啟動(dòng) (kill -HUP) 某個(gè)服務(wù)!必須獨(dú)立成
daily 指定轉(zhuǎn)儲(chǔ)周期為每天
weekly 指定轉(zhuǎn)儲(chǔ)周期為每周
monthly 指定轉(zhuǎn)儲(chǔ)周期為每月
rotate count 指定日志文件刪除之前轉(zhuǎn)儲(chǔ)的次數(shù),0 指沒有備份,5 指保留5 個(gè)備份
dateext 使用當(dāng)期日期作為命名格式
dateformat .%s 配合dateext使用,緊跟在下一行出現(xiàn),定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個(gè)參數(shù)
size(或minsize) log-size 當(dāng)日志文件到達(dá)指定的大小時(shí)才轉(zhuǎn)儲(chǔ),log-size能指定bytes(缺省)及KB (sizek)或
<2>當(dāng)執(zhí)行以上操作時(shí)是自動(dòng)執(zhí)行的,也可手動(dòng)切割
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每天來定時(shí)備份當(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.修改日志級(jí)別版
日志級(jí)別:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)
<1>修改conf/logging.properties日志配置文件,將level級(jí)別設(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Tomcat啟動(dòng)成功但無法訪問http://localhost:8080/的解決方法
在初次使用Tomcat時(shí)遇到了一些問題,經(jīng)過一段時(shí)間的調(diào)試最終將其解決,個(gè)人感覺此問題應(yīng)該比較常見,因此在這做一個(gè)分享,這篇文章主要給大家介紹了關(guān)于Tomcat啟動(dòng)成功但無法訪問http://localhost:8080/的解決方法,需要的朋友可以參考下2023-04-04解決啟動(dòng)tomcat報(bào)錯(cuò)發(fā)生服務(wù)特定錯(cuò)誤1的問題
這篇文章主要介紹了解決啟動(dòng)tomcat報(bào)錯(cuò)發(fā)生服務(wù)特定錯(cuò)誤1的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12在Tomcat中部署Web項(xiàng)目的操作方法(必看篇)
下面小編就為大家?guī)硪黄赥omcat中部署Web項(xiàng)目的操作方法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06非常實(shí)用的Tomcat啟動(dòng)腳本實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于非常實(shí)用的Tomcat啟動(dòng)腳本的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Tomcat具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Windows 下修改Tomcat jvm參數(shù)的方法
這篇文章主要介紹了Windows 下修改Tomcat jvm參數(shù)的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03