多種分割WebServer日誌的方法(轉)
多種分割WebServer日誌的方法(轉)[@more@]本文完整文件的地址為: http://dev.weamax.com/docs/books/log_process/log_process.html
本文作者: Kenny Zhao
為什麼要分割日誌
隨著網站的訪問越來越大,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
官方下載地址:
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/access%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. 修改檔案的執行許可權並測試指令碼
CODE:
[Copy to clipboard]
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
官方下載地址:
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的啟動指令碼末尾:
CODE:
[Copy to clipboard]
58 23 * * * /usr/local/sbin/newsyslog
最後生成的檔名如以下格式:
/usr/local/squid/var/logs/access20050918.log
本文作者: Kenny Zhao
為什麼要分割日誌
隨著網站的訪問越來越大,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
官方下載地址:
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/access%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. 修改檔案的執行許可權並測試指令碼
CODE:
[Copy to clipboard]
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
官方下載地址:
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的啟動指令碼末尾:
CODE:
[Copy to clipboard]
58 23 * * * /usr/local/sbin/newsyslog
最後生成的檔名如以下格式:
/usr/local/squid/var/logs/access20050918.log
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958520/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 減少SQL日誌的三種方法(轉)SQL
- SQL SERVER日誌清除的兩種方法(轉)SQLServer
- shell分割日誌
- Apache Camel日誌四種方法Apache
- 歸檔日誌刪除的五種方法
- filebeat將日誌傳送到kafka不同分割槽的方法Kafka
- 日誌管理系統,多種方式總結
- nginx自帶的日誌日期分割Nginx
- 按日期分割nginx日誌Nginx
- mysql的各種日誌MySql
- MySQL各種日誌的簡介和設定方法MySql
- nginx日誌分割小指令碼Nginx指令碼
- 日誌挖掘的方法
- 普通錶轉換成分割槽表的四種方法
- Linux 中實時檢視日誌的3種方法Linux
- 【Mongodb】 replica set 兩種新增節點方法的日誌分析MongoDB
- Laravel 自定義日誌驅動 -支援按類+日期分割日誌Laravel
- nginx日誌按照天進行分割Nginx
- Tomcat各種日誌的關係與catalina.out檔案的分割Tomcat
- Java日誌:您需要了解的4種日誌型別Java型別
- tomcat日誌集中採集、分析與展示的幾種方法Tomcat
- Apche日誌系列(4):日誌分析(轉)
- 檢視日誌的幾種形式
- 開發JAVA程式設計中字串分割的兩種方法(轉)Java程式設計字串
- hyperf 如何實現按日期分割日誌
- Linux檢視日誌檔案寫入速度的4種方法Linux
- Apche日誌系列(1):訪問日誌(轉)
- Apche日誌系列(2):錯誤日誌(轉)
- Apche日誌系列(3):定製日誌(轉)
- rac日誌收集方法
- HP收集日誌方法
- MySQL普通錶轉換成分割槽表的兩種方法舉例MySql
- MySQL中幾種常見的日誌MySql
- 轉載的學車日誌
- 分割陣列的幾種方法比較陣列
- ORACLE產生隨機數的多種方法分享 轉Oracle隨機
- linux下用cronolog分割apache日誌LinuxApache
- 保證歸檔日誌不能隨意被刪除的四種方法