1. 程式人生 > >伺服器日誌過大,日誌分割工具--cronolog

伺服器日誌過大,日誌分割工具--cronolog

本文將介紹一款日誌分割軟體cronolog。日誌對於每位從事IT技術領域工作的人員來說都是相當重要的,對於系統管理員來說,系統日誌、系統服務的日誌以及應用軟體的日誌是他們每天都需要關注的,從日誌中可以發現系統存在的問題以及一些危險的徵兆等等;對於開發人員來說,應用軟體日誌、debug日誌對於瞭解系統當時的環境、重演或模擬故障以及分析軟體bug都是十分有用的。
  然而一些軟體本身的日誌維護功能卻很薄弱。其中最主要的表現就是將所有的資訊都寫到了同一檔案中,而且又沒有對其歸檔。這樣給檢視和分析日誌檔案帶來很大不便。還有一些軟體本身就沒有日誌功能,僅僅將資訊輸出到標準輸出裝置。為了解決這些軟體先天上日誌功能的不足,我們需要對日誌做進一步的處理,具體來說就是分割,將其按我們需要的規格進行分割,以便日後的檢視、分析、備份以及歸檔等。cronolog就是一款在這方面值得推崇的開源軟體,本文將介紹該軟體的安裝以及使用,並列舉幾個例項。
  2. cronolog的安裝
  cronolog軟體是一個開源軟體,可從其官方網站上獲得原始碼,編譯和安裝。地址為[url]http://cronolog.org/[/url]。
  2.1. cronolog原始碼獲得、配置以及安裝
  首先從[url]http://cronolog.org/[/url]下載原始碼,我所下載的是1.62.版,其地址是[url]http://cronolog.org/download/cronolog-1.6.2.tar.gz[/url]。
  下載後解壓,準備安裝目錄/usr/local/
  # mkdir -p /usr/local/
  configure配置,首先需進入cronolog解壓目錄。
  # ./configure --prefix=/usr/local/
  make編譯。
  # make
  make install安裝。
  # make check
  # make install
  進入/usr/local/cronolog,檢查是否正確安裝。
  # cd /usr/local/sbin
  # ./cronolog -V
  cronolog version 1.6.2
  2.2. cronolog的使用方法
  可以通過cronolog -h命令獲得使用方法,但說明很簡短並且沒有例子。
  # ./cronolog -h
  usage: ./cronolog [OPTIONS] logfile-spec
  -H NAME,   --hardlink=NAME maintain a hard link from NAME to current log
  -S NAME,   --symlink=NAME maintain a symbolic link from NAME to current log
  -P NAME,   --prev-symlink=NAME maintain a symbolic link from NAME to previous log
  -l NAME,   --link=NAME     same as -S/--symlink
  -h,        --help          print this help, then exit
  -p PERIOD, --period=PERIOD set the rotation period explicitly
  -d DELAY, --delay=DELAY   set the rotation period delay
  -o,        --once-only     create single output log from template (not rotated)
  -x FILE,   --debug=FILE    write debug messages to FILE
  ( or to standard error if FILE is "-")
  -a,        --american         American date formats
  -e,        --european         European date formats (default)
  -s,    --start-time=TIME   starting time
  -z TZ, --time-zone=TZ      use TZ for timezone
  -V,      --version         print version number, then exit
  當然也可以通過man cronolog檢視幫助手冊,說明很詳細,而且有舉例說明。不過需要將/usr/local/cronolog/man新增到MANPATH中。
  # export MANPATH=$MANPATH:/usr/local/cronolog/man
  # man cronolog
  … …
  3. cronolog使用例項
  下面我們通過兩個例項來具體瞭解一下其使用方法。
  3.1. 配置apache的訪問日誌
  修改apache的httpd.conf檔案。
  ?設定日誌格式定義
  CustomLog "|/usr/local/sbin/cronolog /data/logs/apache.access.log.%Y%m%d" combined
  其中
  /usr/local/sbin/cronolog 為cronolog安裝後的路徑。
  /data/logs/ 為日誌分割時候日誌儲存位置。
  access_log.%Y%m%d 為日誌檔案的名稱格式,每天一個檔案。
  3.2. 將某一簡單應用軟體的輸出重定向為特定日誌檔案
  對於一個簡單的應用程式,一個shell指令碼deploy.sh,該指令碼需24小時不間斷的在後臺執行。具體執行命令如下,
  # nohup ./deploy.sh 》 ./log/deploy.log &
  將標準輸出重定向到檔案。/log/deploy.log中。
  日誌檔案只有一個,隨著執行時間的推移,該檔案會越來越大。
  現使用cronolog工具處理一下日誌,修改後的命令如下,
  # nohup ./deploy.sh | /usr/local/sbin/cronolog "./log/deploy.logdeploy_%Y%m%d.log" &
  日誌檔案將按天分割,每天產生一個新的日誌檔案。