網站首頁 編程語言 正文
前言
有用Tomcat的,絕對都會遇到這樣一個問題:catalina.out文件過大。
它是Tomcat默認生成的日志文件,會隨著時間的推移,逐漸增大,不斷的增長,甚至達到幾G,幾十G的大小。由于文件過大,不僅占系統的存儲,我們還將無法使用過常規(guī)的編輯工具進行查看,嚴重影響系統的維護工作。
對此,出現了以下幾種解決catalina.out文件過大的方案。
暴力型
除非不需要日志,否則不建議使用
1.手動版
每次監(jiān)控到tomcat的硬盤空間變小達到閾值,手動登陸服務器,切換到tomcat的logs下,手動清空
echo " " ?> catalina.out
2.腳本版
編寫腳本,放入計劃任務中,定時清空
crontab -e? 0 24 * * * ? ?sh /root/qin_catalina.out.sh vim qin_catalina.out.sh ?#!/usr/bin/bash? ?echo " " > catalina.out
技術型
1.日志切割工具版0.1
使用cronolog日志切分工具切分Tomcat的catalina.out日志文件
<1>下載cronolog,并進行安裝
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz ? (中國服務器可能無法下載或下載緩慢,可先下載到境外服務器上) tar zxvf cronolog-1.6.2.tar.gz ./cronolog-1.6.2/configure make make install (默認安裝在/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的日志輪轉問題
<1>在/etc/logrotate.d/目錄下新建一個tomcat的文件
cat >/etc/logrotate.d/tomcat? /usr/local/tomcat/logs/catalina.out{ ? ? ? ? ? ?要輪轉的文件 ? ? copytruncate ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建新的catalina.out副本,截斷源catalina.out文件 ? ? daily ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每天進行catalina.out文件的輪轉 ? ? rotate 7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?至多保留7個副本 ? ? missingok ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文件丟失了,輪轉不報錯 ? ? compress ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用壓縮 ? ? size 500M ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當catalina.out文件大于16MB,就輪轉 }
其他參數:
compress ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 通過gzip 壓縮轉儲以后的日志
nocompress ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不做gzip壓縮處理
copytruncate ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用于還在打開中的日志文件,把當前日志備份并截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日志數據。
nocopytruncate ? ? ? ? ? ? ? ? ? ? ? ? ? ? 備份日志文件不過不截斷
create mode owner group ? ? ? ? ? ? ? ? ? ?輪轉時指定創(chuàng)建新文件的屬性,如create 0777 nobody nobody
nocreate ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不建立新的日志文件
delaycompress ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?和compress 一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
nodelaycompress ? ? ? ? ? ? ? ? ? ? ? ? ? ?覆蓋 delaycompress 選項,轉儲同時壓縮。
missingok ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?如果日志丟失,不報錯繼續(xù)滾動下一個日志
errors address ? ? ? ? ? ? ? ? ? ? ? ? ? ? 專儲時的錯誤信息發(fā)送到指定的Email 地址
ifempty ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?即使日志文件為空文件也做輪轉,這個是logrotate的缺省選項。
notifempty ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當日志文件為空時,不進行輪轉
mail address ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 把轉儲的日志文件發(fā)送到指定的E-mail 地址
nomail ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 轉儲時不發(fā)送日志文件
olddir directory ? ? ? ? ? ? ? ? ? ? ? ? ? 轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統
noolddir ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 轉儲后的日志文件和當前日志文件放在同一個目錄下
sharedscripts ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?運行postrotate腳本,作用是在所有日志都輪轉后統一執(zhí)行一次腳本。如果沒有配置這個,那么每個日志輪轉后都會執(zhí)行一次腳本
prerotate ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?在logrotate轉儲之前需要執(zhí)行的指令,例如修改文件的屬性等動作;必須獨立成行
postrotate ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在logrotate轉儲之后需要執(zhí)行的指令,例如重新啟動 (kill -HUP) 某個服務!必須獨立成
daily ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指定轉儲周期為每天
weekly ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 指定轉儲周期為每周
monthly ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指定轉儲周期為每月
rotate count ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
dateext ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用當期日期作為命名格式
dateformat .%s ? ? ? ? ? ? ? ? ? ? ? ? ? ? 配合dateext使用,緊跟在下一行出現,定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數
size(或minsize) log-size ? ? ? ? ? ? ? ? ? 當日志文件到達指定的大小時才轉儲,log-size能指定bytes(缺省)及KB (sizek)或
<2>當執(zhí)行以上操作時是自動執(zhí)行的,也可手動切割
logrotate /etc/logrotate.conf
如果只輪轉tomcat配置文件,要指定文件
logrotate --force /etc/logrotate.d/tomcat
<3>刪除要清理的日志
手工查找需要清理的日志文件
cd /usr/local/tomcat/logs rm -rf catalina.out.4.gz
2.日志切割腳本版
使用cron每天來定時備份當前的catalina.out,然后清空他的內容;
<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級別設置成WARNING減少日志的輸出。也可以設置成OFF,直接禁用。
catalina.org.apache.juli.FileHandler.level = WARNING catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs catalina.org.apache.juli.FileHandler.prefix = catalina.
原文鏈接:https://moxiao.blog.csdn.net/article/details/80204475
相關推薦
- 2023-01-03 C++?Boost?MetaStateMachine定義狀態(tài)機超詳細講解_C 語言
- 2022-07-01 使用python實現簡單去水印功能_python
- 2022-07-19 Linux手工配置靜態(tài)ip地址
- 2022-06-22 Android使用http實現注冊登錄功能_Android
- 2022-02-17 使用Postman測試接口提示Error: connect ECONNREFUSED 127.0.0
- 2023-03-23 Android進階CoordinatorLayout協調者布局實現吸頂效果_Android
- 2022-05-12 Kotlin 代數/枚舉/密封類
- 2022-03-24 Android實現旋轉動畫_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支