跨平臺日志清理工具 Log-Cutter v2.0.1 RC-1 發布

dumiyue 11年前發布 | 11K 次閱讀 LogCutter JessMA 日志清理 日志歸 Log-Cutter

   Log-Cutter 是JessMA開源組開發的一個簡單實用的日志切割清理工具。對于服務器的日常維護來說,日志清理是非常重要的事情,如果殘留日志過多則嚴重浪費磁盤空間同時影響服務的性能。如果用手工方式進行清理,會花費太多時間,并且很多時候難以滿足實際要求。例如:如何在每個星期六凌晨3點把超過 2G 大的日志文件進行切割,保留最新的 100M 日志記錄? 網上沒有發現能滿足本座要求的日志切割工具,因此花了一些閑暇時間自己寫了一個。由于要在多個平臺上使用,為了方便采用 Java 實現。本工具命名為 Log-Cutter,主要有以下特點

  1. 支持 Linux、Mac 和 Windows 等所有常見操作系統平臺
  2. 支持命令行交互式運行
  3. 支持后臺非交互式運行(Linux/MAC 下使用 daemon 進程實現,Windows 用系統 Service 實現)
  4. 支持三種日志清理方式(刪除日志文件、切割日志文件或歸檔日志文件)
  5. 支持對 GB18030、UTF-8、UTF-16LE、UTF-16BE 等常用日志文件類型進行切割
  6. 高度可配置(程序執行周期、要刪除的日志文件過期時間、要切割的日志文件閥值和保留大小等均可配置

Log-Cutter 官方網站:http://www.jessma.org

Log-Cutter 下載地址:http://code.google.com/p/ldcsaa/

  • 使用方法:
    **************************************************************************
      
    **** LogCutter - JessMA Open Source, all rights reserved. ****
    **************************************************************************

    一、啟動方式
    --------------------------------------------------
    1) Windows
     A) 前臺運行
    : > ./run.bat [ -f config-file ]
     
     
    *** 注 *** 
       @ 啟動前先配置好 run
    .bat 中的 ‘JAVA_HOME’ 和 ‘APP_PATH’ 環境變量
     
     B) 后臺運行
    : > LogCutter.exe    { 
                                                         
    -install-demand   (安裝手動啟動服務)
                                                         
    -install-auto        (安裝自動啟動服務)
                                                         
    -uninstall           (刪除服務)
                                                         
    -start                 (啟動服務)
                                                         
    -stop                 (停止服務)
                                                         
    -status              (查看服務狀態)
                                     }

     
    *** 注 *** 
       @ LogCutter
    .exe 以 Windows 系統服務的方式運行,安裝好后也可以通過 Windows 服務管理器進行管理
       @ LogCutter
    .exe 是 32 位程序,LogCutter_x64.exe 是 64 位程序,根據需要使用其中之一
       @ LogCutter
    .exe 依賴 JRE 1.6+, 因此必須在注冊表或環境變量中設置 %JAVA_HOME%

    2) Linux / Unix
     A) 前臺運行
    : $ ./run.sh [ -f config-file ]
     B) 后臺運行
    : $ ./run.sh [ -f config-file ] -d

     
    *** 注 ***
       @ 啟動前先配置好 run
    .sh 中的 ‘JAVA_HOME’ 和 ‘APP_PATH’ 環境變量
       @ 可以把后臺運行命令加入 
    /etc/rc.d/rc.local 文件中,從而設置為開機時自動運行
     
    --------------------------------------------------

    二、配置文件
    --------------------------------------------------
    1) 程序配置文件: ./conf/config.xml (默認)
     (示例參考:
    ./conf/config-template.xml)
    2) 日志配置文件: ./conf/log4j.properties (默認)
     (示例請參考:
    ./conf/log4j.properties)
    --------------------------------------------------

    三、環境要求
    --------------------------------------------------
    1) Java 版 本: JRE 1.6 以上
    2) 依賴程序包: dom4j、log4j、ant、juniversalchardet
    --------------------------------------------------

      詳細說明與使用方法參考:《操作指南

  • 配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <CONFIG    xmlns="http://www.jessma.org"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://www.jessma.org http://www.jessma.org/schema/log-cutter-cfg-2.0.xsd">
        
    <global>
            
    <!-- 開始日志檢查延時 (小時), 默認: 0 (立刻開始)
            
                1) 當指定為一個整數值時,執行器首次啟動延時時間為該值設定的小時數
                (例如:12 小時后首次啟動執行器)
                <start-check-delay>12</start-check-delay>
                    
                2) 當指定為一個 ‘hh:mm’ 格式的值時,執行器首次啟動時間為該時分值
                (例如:12 點 34 分首次啟動執行器,如果當前時間超過 12 點 34 分則在明天的 12 點 34 分首次啟動執行器)
                <start-check-delay>12:34</start-check-delay>
            
    -->
            
    <!-- 02 點 30 分首次啟動執行器 -->
            
    <start-check-delay>02:30</start-check-delay>
            
    <!-- 日志檢查間隔 (小時), 默認: 72 -->
            
    <check-interval></check-interval>
            
    <!-- Log4J 配置文件, 默認: ${CLASS_ROOT}/../conf/log4j.properties -->
            
    <log4j-config-file></log4j-config-file>
            
    <!-- 進程鎖文件, 默認: ${CLASS_ROOT}/../${APP_NAME}.lock -->
            
    <lock-file></lock-file>
        
    </global>
        
        
    <!-- 要刪除的日志文件列表(可配置多個,由 DelFileRunner 執行)
            1) DelFileRunner 會遞歸刪除符合條件的文件夾及其中的所有文件
            2) 注意:在判斷是否刪除文件夾時,檢測的是文件夾的最后修改時間,而不是其中文件的最后修改時間
            3) DelFileRunner 適用于清理 “定期產生新日志文件” 的應用程序日志
        
    -->
        
    <!-- delete-files.expire: 日志文件過期時間(天), 默認: 90 -->
        
    <delete-files expire="30">
            
    <!-- file.path: 文件所在目錄, 必須填寫, 不能包含通配符 -->
            
    <!-- file: 文件或文件夾名稱, 必須填寫, 可包含通配符 -->
            
    <file path="D:\LogCutter\logs">LogCutter.log*</file>
            
    <file path="D:\hMailServer\Logs">*.log</file>
            
    <file path="D:\Tomcat 6.0\logs">*.log</file>
        
    </delete-files>
        
    <delete-files expire="365">
            
    <file path="E:\backup">*</file>
        
    </delete-files>
        
        
    <!-- 要截斷的日志文件列表(可配置多個,由 CutFileRunner 執行)
            1) CutFileRunner 只會掃描符合條件的文件,不會掃描文件夾
            2) CutFileRunner 會截斷文件的前部內容,保留后部內容
            3) CutFileRunner 適用于清理 “日志文件不斷追加增長” 的應用程序日志
        
    -->
        
    <!-- cut-files.threshold:    日志文件截斷閥值(KB), 默認: 10240 -->
        
    <!-- cut-files.reserve:        日志文件保留內容(KB), 默認: 1024 -->
        
    <!--
             <!注!> 'cut-files.reserve' 是保留內容的近似值, 實際內容按行取整保留
                如下列日志文件內容:
                      
                     line1: xxxxxxxxxxxxxxxxxxxxx
                     line2: xxxxxxxxxxPyyyyyyyyyy
                     line3: zzzzzzzzzzzzzzzzzzzzz
                     line4: zzzzzzzzzzzzzzzzzzzzz
                        (EOF)
                 'P'為定位得到的保留起點, 程序實際會在'P'點開始查找下一個換行符,
                 從該換行符的后一個字符開始保留, 也就是從第三行開始保留到文件末尾
        
    -->
        
    <cut-files threshold="10240" reserve="512">
            
    <file path="D:\Apache-2.2\logs">*.log</file>
            
    <file path="D:\MySQL Server 5.1\data">*.err</file>
        
    </cut-files>
        
        
    <!-- 要歸檔的日志文件列表(可配置多個,由 ArcFileRunner 執行)
            1) ArchiveFileRunner 把符合條件的文件或文件夾壓縮歸檔到指定目錄,并刪除原文件或文件夾
            2) 歸檔文件格式:{原文件/文件夾名稱}_{系統時間}.zip
            3) 注意:在判斷是否歸檔文件夾時,檢測的是文件夾的最后修改時間,而不是其中文件的最后修改時間
            4) ArchiveFileRunner 適用于清理 “定期產生新日志文件或日志目錄” 的應用程序日志
        
    -->
        
    <!-- archive-files.expire:     日志文件過期時間(天), 默認: 90 -->
        
    <!-- archive-files.archive-path: 日志文件歸檔目錄 -->
        
    <archive-files expire="120" archive-path="E:\backup">
            
    <file path="D:\MySQL Server 5.1\data">mysql-bin.*</file>
        
    </archive-files>
    </CONFIG>

Log-Cutter 2.0.1 更新:

 

1、增加文件歸檔執行器 ArcFileRunner
  1) ArcFileRunner 把符合條件的文件或文件夾壓縮歸檔到指定目錄,并刪除原文件或文件夾
  2) 屬性 expire 指定歸檔到期時間,屬性 archive-path 指定歸檔目錄
  3) 歸檔文件格式:{原文件/文件夾名稱}_{系統時間}.zip

 

  (例如:下面的配置把最后修改時間超過 90 天的文件或文件夾歸檔到 ‘E:\backup’ 目錄)

        <archive-filesarchive-path="E:\backup" expire=90>
            <file path="X:\MyApp\logs">*</file>

                <file path="X:\nginx-1.4.1\logs">*.log</file>

           </archive-files>

 

2、支持多組文件清理策略
  1) config.xml 可以配置多項 <delete-files>、<cut-files> 或 <archive-files>
  2) 不同的配置項可以使用不同的清理策略參數
   

 

      (例如:下面配置的兩組歸檔清理策略中,分別指定不同的歸檔到期時間和歸檔目錄)

       <archive-files archive-path="E:\backup" expire=90>
            <file path="X:\MyApp\logs">*</file>
            <file path="X:\nginx-1.4.1\logs">*.log</file>
        </archive-files>
        <archive-files archive-path="E:\backup2" expire=300>
            <file path="X:\MyApp2\logs">*</file>
            <file path="X:\Tomcat-6\logs">*.log</file>
        </archive-files>

 

3、文件刪除執行器 DelFileRunner 支持遞歸刪除文件夾
  1) DelFileRunner 會遞歸刪除符合條件的文件夾及其中的所有文件
  2) 注意:在判斷是否刪除文件夾時,檢測的是文件夾的最后修改時間,而不是其中文件的最后修改時間

 

  (例如:下面的配置會刪除 logs 目錄下所有最后修改時間超過 90 天的文件或文件夾)

        <delete-files expire=90>
            
<file path="X:\MyApp\logs">*</file>
        
</delete-files>

 

4、執行器首次啟動延時配置 ‘<start-check-delay>’ 支持指定絕對時間
  1) 當指定為一個整數值時,執行器首次啟動延時時間為該值設定的小時數
  2) 當指定為一個 ‘hh:mm’ 格式的值時,執行器首次啟動時間為該時分值

 

   (例如)

   <!-- 12 小時后首次啟動執行器 -->
   <start-check-delay>12</start-check-delay>
   <!-- 12 點 34 分首次啟動執行器,如果當前時間超過 12 點 34 分則在明天的 12 點 34 分首次啟動執行器 -->
   <start-check-delay>12:34</start-check-delay>

 本文由用戶 dumiyue 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!