偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用Java實(shí)現(xiàn)的日志切割清理工具

開(kāi)發(fā) 后端
對(duì)于服務(wù)器的日常維護(hù)來(lái)說(shuō),日志清理是非常重要的事情,如果殘留日志過(guò)多則嚴(yán)重浪費(fèi)磁盤(pán)空間同時(shí)影響服務(wù)的性能。如果用手工方式進(jìn)行清理,會(huì)花費(fèi)太多時(shí)間,并且很多時(shí)候難以滿(mǎn)足實(shí)際要求。

對(duì)于服務(wù)器的日常維護(hù)來(lái)說(shuō),日志清理是非常重要的事情,如果殘留日志過(guò)多則嚴(yán)重浪費(fèi)磁盤(pán)空間同時(shí)影響服務(wù)的性能。如果用手工方式進(jìn)行清理,會(huì)花費(fèi)太多時(shí)間,并且很多時(shí)候難以滿(mǎn)足實(shí)際要求。例如:如何在每個(gè)星期六凌晨3點(diǎn)把超過(guò)2G大的日志文件進(jìn)行切割,保留最新的100M日志記錄?

網(wǎng)上沒(méi)有發(fā)覺(jué)能滿(mǎn)足本座要求的日志切割工具,因此花了一些閑暇時(shí)間自己寫(xiě)了一個(gè)。由于要在多個(gè)平臺(tái)上使用,為了方便采用 Java 實(shí)現(xiàn)。本工具命名為 LogCutter,主要有以下特點(diǎn):

  1. 支持 Linux、Mac 和 Windows 等所有常見(jiàn)操作系統(tǒng)平臺(tái)
  2. 支持命令行交互式運(yùn)行
  3. 支持后臺(tái)非交互式運(yùn)行(Linux/MAC 下使用 daemon 進(jìn)程實(shí)現(xiàn),Windows 用系統(tǒng) Service 實(shí)現(xiàn))
  4. 支持兩種日志清理方式(刪除日志文件或切割日志文件)
  5. 支持對(duì) GB18030、UTF-8、UTF-16LE、UTF-16BE 等常用日志文件類(lèi)型進(jìn)行切割(不會(huì)發(fā)生切掉半個(gè)字符的情況)
  6. 高度可配置(程序執(zhí)行周期、要?jiǎng)h除的日志文件過(guò)期時(shí)間、要切割的日志文件閥值和保留大小等均可配置

使用方法:

  1. *******************************************************  
  2. **** LogCutter - Bruce Liang, all rights reserved. ****  
  3. *******************************************************  
  4.  
  5. 一、啟動(dòng)方式  
  6. --------------------------------------------------  
  7. ) Windows  
  8.     A) 前臺(tái)運(yùn)行: > ./run.bat  
  9.     B) 后臺(tái)運(yùn)行: > ./LogCutter.exe {      
  10.                                        -install-demand  (安裝手動(dòng)啟動(dòng)服務(wù))  
  11.                                        -install-auto    (安裝自動(dòng)啟動(dòng)服務(wù))  
  12.                                        -start           (啟動(dòng)服務(wù))  
  13.                                        -stop            (停止服務(wù))  
  14.                                        -status          (查看服務(wù)狀態(tài))  
  15.                                    }  
  16.  
  17.     *** 注 ***   
  18.         @ LogCutter.exe 以 Windows 系統(tǒng)服務(wù)的方式運(yùn)行,安裝好后也可以通過(guò) Windows 服務(wù)管理器進(jìn)行管理  
  19.         @ LogCutter.exe 依賴(lài) JRE 1.6, 因此必須在注冊(cè)表或環(huán)境變量中設(shè)置 %JAVA_HOME%  
  20. ) Linux / Unix  
  21.     A) 前臺(tái)運(yùn)行: $ ./run.sh  
  22.     B) 后臺(tái)運(yùn)行: $ ./run.sh -d  
  23.  
  24.     *** 注 ***  
  25.         @ 可以設(shè)置為開(kāi)機(jī)時(shí)自動(dòng)后臺(tái)運(yùn)行,方法如下:  
  26.  
  27.         $ vi /etc/rc.d/rc.local  
  28.                     ( 加入: ${YOUR_LOGCUTTER_PATH}/run.sh -d )  
  29. --------------------------------------------------  
  30.  
  31. 二、配置文件  
  32. --------------------------------------------------  
  33. ) 程序配置文件: ./conf/config.xml  
  34. ) 日志配置文件: ./conf/log4j.properties (默認(rèn))  
  35. --------------------------------------------------  
  36.  
  37. 三、環(huán)境要求  
  38. --------------------------------------------------  
  39. ) Java 版 本: JRE 1.6 以上  
  40. ) 依賴(lài)程序包: dom4j、log4j、juniversalchardet  
  41. -------------------------------------------------- 

run.sh (Mac 平臺(tái))

  1. #!/bin/bash  
  2.  
  3. JAVA_HOME="/Library/Java/Home" 
  4. CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
  5. JAVA_BIN=$JAVA_HOME/bin  
  6. JAVA=$JAVA_BIN/java  
  7.  
  8. APP_PATH="/Users/Kingfisher/MyWork/Java/LogCutter" 
  9. APP_CLASSPATH=$APP_PATH/classes  
  10. APP_LIBPATH=$APP_PATH/lib  
  11. APP_LIBS=$APP_LIBPATH/dom4j-1.6.1.jar:$APP_LIBPATH/log4j-1.2.16.jar:$APP_LIBPATH/juniversalchardet-1.0.3.jar  
  12. APP_CONFPATH=$APP_PATH/conf  
  13. APP_CONFFILE=$APP_CONFPATH/config.xml  
  14. APP_MAIN_CLASS=com.bruce.main.LogCutter  
  15.  
  16. DAEMON='-d' 
  17. CMD="$JAVA -cp $CLASSPATH:$APP_CLASSPATH:$APP_LIBS $APP_MAIN_CLASS -f $APP_CONFFILE" 
  18.  
  19. if [ $# -eq 0 ]  
  20. then  
  21.     $CMD  
  22. elif [ "$#" -eq 1 -a "$1" = "$DAEMON" ]  
  23. then  
  24.     $CMD &  
  25. else  
  26.     echo "Usage: $0 [ $DAEMON ]"  
  27.     exit 1  
  28. fi 

交互式運(yùn)行操作演示:

  1. [Kingfisher@Bruce-mbp LogCutter] $ pwd  
  2. /Users/Kingfisher/MyWork/Java/LogCutter  
  3. [Kingfisher@Bruce-mbp LogCutter] $ ./run.sh   
  4. command line usage   
  5. ------------------------------------------------------------  
  6.     HELP : Show help  
  7.     JOBS : Show jobs status  
  8.      CFG : Show configuration summary  
  9.      RUN : Schedule jobs manually  
  10.       !Q : Shutdown application  
  11.        ? : About me  
  12. ------------------------------------------------------------  
  13. > help  
  14. command line usage   
  15. ------------------------------------------------------------  
  16.     HELP : Show help  
  17.     JOBS : Show jobs status  
  18.      CFG : Show configuration summary  
  19.      RUN : Schedule jobs manually  
  20.       !Q : Shutdown application  
  21.        ? : About me  
  22. ------------------------------------------------------------  
  23. > jobs  
  24. jobs summary (total: 2, active: 0)   
  25. ------------------------------------------------------------  
  26. . DelFileRunner@334936591                    [  Idle  ]  
  27. . CutFileRunner@724646150                    [  Idle  ]  
  28. ------------------------------------------------------------  
  29. > cfg  
  30. configuration summary   
  31. ------------------------------------------------------------  
  32. [global]  
  33.     start-check-delay : 1 hours  
  34.        check-interval : 24 hours  
  35.     log4j-config-file : /Users/Kingfisher/MyWork/Java/LogCutter/classes/../conf/log4j.properties  
  36.             lock-file : /Users/Kingfisher/MyWork/Java/LogCutter/classes/../LogCutter.lock  
  37. [delete-files] (expire: 30 days)  
  38. . /opt/LogCutter/logs/LogCutter.log*  
  39. . /opt/tomcat6-logs/*.log  
  40. . /opt/tomcat7-logs/*.log  
  41. [cut-files] (threshold: 30960 KBs, reserve: 1024 KBs)  
  42. . /opt/apache-logs/*_log  
  43. . /opt/nginx-logs/*.log  
  44. . /opt/tomcat6-logs/catalina.out  
  45. . /opt/tomcat7-logs/catalina.out  
  46. . /var/lib/mysql/*.err  
  47. ------------------------------------------------------------  
  48. > run  
  49. manual jobs are scheduled !  
  50. > ?  
  51. LogCutter 1.0.2 - Bruce Liang, all rights reserved.   
  52. ------------------------------------------------------------  
  53.     Description : schedule to DELETE and CUT text log files automatically or manually.  
  54.         Support : GB18030, UTF-8, UTF-16LE and UTF-16BE text file types.  
  55.           Usage : java com.bruce.main.LogCutter [ -f <config-file> ]  
  56.                   (default config file is '/Users/Kingfisher/MyWork/Java/LogCutter/classes/../conf/config.xml')  
  57. ------------------------------------------------------------  
  58. > !q  
  59. be about to shutdown, please wait ...  
  60. shutdown perfectly ! 

后臺(tái)運(yùn)行演示(Mac 平臺(tái)):

  1. [Kingfisher@Bruce-mbp LogCutter] $ ./run.sh -d  
  2. [Kingfisher@Bruce-mbp LogCutter] $   
  3. LogCutter is running in background, use 'kill 4544' to stop me.  
  4.  
  5. [Kingfisher@Bruce-mbp LogCutter] $ kill 4544  
  6. [Kingfisher@Bruce-mbp LogCutter] $   
  7. !! LogCutter received terminate signal !!  
  8. be about to shutdown, please wait ...  
  9. shutdown perfectly !  
  10.  
  11. [Kingfisher@Bruce-mbp LogCutter] $ 

程序運(yùn)行日志

  1. :52:20,705  INFO [main]: ->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> 
  2. :52:20,706  INFO [main]: starting: class com.bruce.main.LogCutter ...  
  3. :52:20,707  INFO [main]: configuration summary   
  4. ------------------------------------------------------------  
  5. [global]  
  6.     start-check-delay : 1 hours  
  7.        check-interval : 24 hours  
  8.     log4j-config-file : /Users/Kingfisher/MyWork/Java/LogCutter/classes/../conf/log4j.properties  
  9.             lock-file : /Users/Kingfisher/MyWork/Java/LogCutter/classes/../LogCutter.lock  
  10. [delete-files] (expire: 30 days)  
  11. . /opt/LogCutter/logs/LogCutter.log*  
  12. . /opt/tomcat6-logs/*.log  
  13. . /opt/tomcat7-logs/*.log  
  14. [cut-files] (threshold: 30960 KBs, reserve: 1024 KBs)  
  15. . /opt/apache-logs/*_log  
  16. . /opt/nginx-logs/*.log  
  17. . /opt/tomcat6-logs/catalina.out  
  18. . /opt/tomcat7-logs/catalina.out  
  19. . /var/lib/mysql/*.err  
  20. ------------------------------------------------------------  
  21. :52:39,062  INFO [pool-1-thread-2]: - - - - - - - -> start CutFileRunner@724646150 <- - - - - - - -  
  22. :52:39,062  INFO [pool-1-thread-1]: - - - - - - - -> start DelFileRunner@334936591 <- - - - - - - -  
  23. :52:39,063  INFO [pool-1-thread-2]: - - - - - - - -> end   CutFileRunner@724646150 <- - - - - - - -  
  24. :52:39,063  INFO [pool-1-thread-1]: - - - - - - - -> end   DelFileRunner@334936591 <- - - - - - - -  
  25. :52:54,222  INFO [main]: stoping: class com.bruce.main.LogCutter ...  
  26. :52:54,222  INFO [main]: <-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<- 

程序配置文件(./conf/config.xml)

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <CONFIG> 
  3.     <global> 
  4.         <!-- 開(kāi)始日志檢查延時(shí) (小時(shí)), 默認(rèn): 0 (立刻開(kāi)始) --> 
  5.         <start-check-delay>1</start-check-delay> 
  6.         <!-- 日志檢查間隔 (小時(shí)), 默認(rèn): 72 --> 
  7.         <check-interval>24</check-interval> 
  8.         <!-- Log4J 配置文件, 默認(rèn): ${CLASS_ROOT}/../conf/log4j.properties --> 
  9.         <log4j-config-file></log4j-config-file> 
  10.         <!-- 程序鎖, 默認(rèn): ${CLASS_ROOT}/../${APP_NAME}.lock --> 
  11.         <lock-file></lock-file> 
  12.     </global> 
  13.     <!-- 要?jiǎng)h除的日志文件列表 --> 
  14.     <!-- delete-files.expire: 日志文件過(guò)期時(shí)間(天), 默認(rèn): 90 --> 
  15.     <delete-files expire="30"> 
  16.         <!-- files: 文件名稱(chēng)(不包含目錄), 必須填寫(xiě), 可包含通配符 --> 
  17.         <!-- files.path: 文件所在目錄, 必須填寫(xiě), 不能包含通配符 --> 
  18.         <file path="/opt/LogCutter/logs">LogCutter.log*</file> 
  19.         <file path="/opt/tomcat6-logs">*.log</file> 
  20.         <file path="/opt/tomcat7-logs">*.log</file> 
  21.         <!--  
  22.         <file path="/var/lib/mysql">mysql-bin.*</file> 
  23.         <file path="/var/lib/mysql">efly-test-relay-bin.*</file> 
  24.         --> 
  25.     </delete-files> 
  26.     <!-- 要截?cái)嗟娜罩疚募斜?nbsp;--> 
  27.     <!-- cut-files.threshold: 日志文件截?cái)嚅y值(KB), 默認(rèn): 10240 --> 
  28.     <!-- cut-files.reserve: 日志文件保留內(nèi)容(KB), 默認(rèn): 1024 --> 
  29.     <!--  
  30.          <!注!> 'cut-files.reserve' 是保留內(nèi)容的近似值得, 實(shí)際內(nèi)容按行取整保留  
  31.             如下列日志文件內(nèi)容:  
  32.                 ...... ...... ......  
  33.                  line1: xxxxxxxxxxxxxxxxxxxxx  
  34.                  line2: xxxxxxxxxxPyyyyyyyyyy  
  35.                  line3: zzzzzzzzzzzzzzzzzzzzz  
  36.                  line4: zzzzzzzzzzzzzzzzzzzzz  
  37.                  ...... ...... ...... (EOF)  
  38.              'P'為定位得到的保留起點(diǎn), 程序?qū)嶋H會(huì)在'P'點(diǎn)開(kāi)始查找下一個(gè)換行符,  
  39.              從該換行符的后一個(gè)字符開(kāi)始保留, 也就是從第三行開(kāi)始保留到文件末尾  
  40.     --> 
  41.     <cut-files threshold="30960" reserve="1024"> 
  42.                 <file path="/opt/apache-logs">*_log</file> 
  43.                 <file path="/opt/nginx-logs">*.log</file> 
  44.                 <file path="/opt/tomcat6-logs">catalina.out</file> 
  45.                 <file path="/opt/tomcat7-logs">catalina.out</file> 
  46.                 <file path="/var/lib/mysql">*.err</file> 
  47.     </cut-files> 
  48. </CONFIG> 

下載試用:http://files.cnblogs.com/ldcsaa/LogCutter.zip

原文鏈接:http://www.cnblogs.com/ldcsaa/archive/2012/02/12/2347689.html

【編輯推薦】

  1. Java網(wǎng)絡(luò)組件 HttpComponents 4.2-beta1發(fā)布
  2. 甲骨文發(fā)布JSR 356 針對(duì)WebSocket的Java API
  3. Disruptor 2.8發(fā)布 Java 并發(fā)編程框架
  4. jOOQ 2.0.4發(fā)布 Java的ORM框架
  5. Wordpress Java 0.5 發(fā)布

 

責(zé)任編輯:林師授 來(lái)源: ~怪^_*獸~的博客
相關(guān)推薦

2012-06-25 12:33:12

Java日志切割

2011-01-27 16:53:13

系統(tǒng)清理工具BleachBitLinux

2013-01-05 09:43:25

亞馬遜AWS公有云服務(wù)Netflix

2011-11-21 15:04:30

2013-03-13 09:36:56

PC清理工具Windows8

2010-05-26 09:10:44

Windows清理工具

2018-09-14 10:20:09

微軟工具Windows

2010-03-30 19:23:56

Nginx日志切割

2013-04-17 09:17:37

Linux文件系統(tǒng)系統(tǒng)清理工具

2021-05-14 23:22:58

Windows 10Windows微軟

2010-03-30 19:41:16

Nginx日志

2015-07-22 17:33:52

UbuntuCCleaner系統(tǒng)清理工具

2017-01-24 18:49:28

Windows磁盤(pán)清理

2021-07-28 09:53:48

禁用CPU清理工具

2023-03-09 14:48:07

Chrome瀏覽器

2013-04-15 15:07:43

清理日志Linux系統(tǒng)

2021-02-01 05:57:43

電腦文件清理工具

2024-08-07 10:54:27

MySQL日志策略

2022-01-10 09:43:55

CCleanerWindows 11微軟商店

2017-02-13 16:46:16

日志管理工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)