多種分割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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Apache Camel日誌四種方法Apache
- filebeat將日誌傳送到kafka不同分割槽的方法Kafka
- nginx自帶的日誌日期分割Nginx
- 按日期分割nginx日誌Nginx
- Tomcat各種日誌的關係與catalina.out檔案的分割Tomcat
- 日誌管理系統,多種方式總結
- Linux 中實時檢視日誌的3種方法Linux
- Laravel 自定義日誌驅動 -支援按類+日期分割日誌Laravel
- tomcat日誌集中採集、分析與展示的幾種方法Tomcat
- Java日誌:您需要了解的4種日誌型別Java型別
- Linux檢視日誌檔案寫入速度的4種方法Linux
- hyperf 如何實現按日期分割日誌
- 檢視日誌的幾種形式
- 分割陣列的幾種方法比較陣列
- rac日誌收集方法
- MySQL中幾種常見的日誌MySql
- 轉轉容器日誌採集的演進之路
- Logstash 配置Java日誌格式的方法Java
- 掌握Java各種日誌框架Java框架
- TXT文字Log日誌分割工具(附工具連結)
- SpringBoot多環境日誌配置Spring Boot
- 限制 Apache日誌檔案大小的方法Apache
- CentOS 7.0下nginx實現每天定時分割日誌CentOSNginx
- 檢視mysql 的binlog日誌存放的位置(轉)MySql
- DG_保證歸檔日誌不能隨意被刪除的四種方法
- JavaScript建立物件的多種方法JavaScript物件
- (四)Logstash收集、解析日誌方法
- Oracle listener log 日誌分析方法Oracle
- vue 跳轉的兩種方法Vue
- 日誌檔案使用小結(轉)
- 帶你掌握Java各種日誌框架Java框架
- MySQL四種日誌binlog/redolog/relaylog/undologMySql
- 玩轉ASP.NET Core中的日誌元件ASP.NET元件
- 另一種列印輸出日誌資訊的方式
- 獲得資料庫操作日誌的三種方式資料庫
- 【工具】方法日誌列印+任務切片
- 頁面跳轉的幾種方法
- 多執行緒 日誌 和截圖的問題執行緒
- IIS 日誌匯入到資料庫的方法資料庫