多種分割WebServer日志的方法
發表于:2007-05-26來源:作者:點擊數:
標簽:
為什么要分割日志 隨著網站的訪問越來越大,WebServer產生的日志文件也會越來越大,如果不對日志進行分割,那么只能一次將大的日志(如Apache的日志)整個刪除,這樣也丟失了很多對網站比較寶貴的信息,因為這些日志可以用來進行訪問分析、 網絡安全 監察、網
為什么要分割日志
隨著網站的訪問越來越大,WebServer產生的日志文件也會越來越大,如果不對日志進行分割,那么只能一次將大的日志(如Apache的日志)整個刪除,這樣也丟失了很多對網站比較寶貴的信息,因為這些日志可以用來進行訪問分析、
網絡安全監察、網絡運行狀況監控等,因此管理好這些海量的日志對網站的意義是很大的。
本文將總結一些實用的日志分割方法,希望能夠方便
Linux/
Unix管理員對日志文件進行有效的管理,如果文件過多過大,可以刪除一些歷史的文件。
幾種日志分割方法
2.1.1. 用第三方程序cronolog進行日志分割
2.1.2. 用自寫的腳本進行日志分割
2.1.3. 用第三方程序newsyslog進行日志分割
2.1.1. 用第三方程序cronolog進行日志分割
這種方法最便捷快速,缺點是只支持Apache。
例 2.1. 用cronolog分割日志
1.
下載cronolog
官方下載地址: http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar xzvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
2. 編譯
./configure
make
make install
3. 修改Apache的配置文件httpd.conf,加入以下代碼
CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/www/aclearcase/" target="_blank" >ccess%Y%m%d.log" combined
注意
如果Apache中有多個虛擬主機,最好每個虛擬主機中放置一個這樣的代碼,并將日志文件名改成不同的名字
提示
/var/log/httpd/www/ 可以更改為任何日志輸出路徑
4. 保存配置后重新啟動Apache服務
/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start
最后生成的文件名如以下格式:
/var/log/httpd/www/access20050918.log
2.1.2. 用自寫的腳本進行日志分割
如果因為條件不允許,不能使用cronolog分割,這里提供一種更加簡潔的方法,可適合以下系統
Linux
Unix
*BSD
例 2.2. 計劃任務的方式每天生成一個文件并壓縮存放
注意
假設:/var/log/httpd/ 為日志存放的路徑,access_log 為以前的日志文件名
1. 創建新文件: /var/log/httpd/log-task.cron
文件內容如下
#!/bin/bash
YESTERDAY=`date -d yesterday +%Y%m%d`
/usr/bin/gzip -c /var/log/httpd/access_log>/var/log/httpd/access${YESTERDAY}.log.gz
>/var/log/httpd/access_log
保存退出
2. 修改文件的執行權限并
測試腳本
chmod u+x /var/log/httpd/log-task.cron
立即執行一次,測試腳本是否正常工作
注意
測試之前建議先備份一下日志文件(/var/log/httpd/access_log)
測試:
/var/log/httpd/log-task.cron
檢查/var/log/httpd 目錄下是否已經生成了日期命名的文件。
3. 將該腳本加入到自動運行任務中
crontab -e
然后將以下的的代碼拷貝加入到cron的啟動腳本末尾:
1 0 * * * /var/log/httpd/log-task.cron
保存退出。
提示
(每天凌晨0點1分系統將自動進行日志回滾任務,最終會在/var/log/httpd目錄下每天生成一個壓縮的日志文件,文件名如 access20051216.log.gz)
2.1.3. 用第三方程序newsyslog進行日志分割
這種方法適用于SQUID等無法使用cronolog的WebServer,缺點是安裝比較復雜。
例 2.3. 用newsyslog分割日志
注意
假設:/usr/local/squid/var/logs/ 為日志存放的路徑,access.log 為以前的日志文件名
1. 下載newsyslog
官方下載地址: http://archives.eyrie.org/software/system/newsyslog-1.8.tar.gz
tar xzvf newsyslog-1.8.tar.gz
cd newsyslog-1.8
2. 編譯
./configure
make
make install
3. 創建一個新的文件 /usr/local/etc/newsyslog.conf
set squid_logpath = /usr/local/squid/var/logs
set squid_log = /usr/local/squid/var/logs/access.log
set date_squid_log = /usr/local/squid/var/logs/access%Y%M%D.log
SQUID{
restart: run /usr/local/squid/sbin/squid -k rotate
log: SQUID squid_log squid squid 644
archive: SQUID date_squid_log 0
}
保存退出
提示
/usr/local/squid/var/logs 可以更改為任何日志輸出路徑
4. 將該腳本加入到自動運行任務中
crontab -e
然后將以下的的代碼拷貝加入到cron的啟動腳本末尾:
58 23 * * * /usr/local/sbin/newsyslog
最后生成的文件名如以下格式:
/usr/local/squid/var/logs/access20050918.log
原文轉自:http://www.kjueaiud.com
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|