apache日志文件過大的事情我以前碰到過,就是自己未設置apache生成文件多大時自動創建文件,而一直讓它記錄結果日志文件到了100GB,當時刪除的空間都沒有了。
設置web服務器時,一般我們都會記錄下請求的信息,以及錯誤的相關信息。
- ErrorLog "/home/zhangy/apache/www.test.com-error.log"
- CustomLog "/home/zhangy/apache/www.test.com-access.log" common
做了上面的配置,如果你不定期刪除的話,我想隨著時間的推移,這些日志文件能達到幾個G的大小。占用資源不說,還不利于我們查看日志信息。其實對訪問信息,以及錯誤錯誤只是為了幫助我們了解服務器的訪問,運行情況,個人覺得只要了解近期的就OK了。
下面有2種方法可以解決這個問題
1,rotatelogs這樣日志回滾的工具
用法
rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]
-l 使用本地時間代替GMT時間作為時間基準。注意:在一個改變GMT偏移量(比如夏令時)的環境中使用-l會導致不可預料的結果。
logfile 它加上基準名就是日志文件名。如果logfile中包含"%",則它會被視為用于strftime()的格式字符串;否則它會被自動加上以秒為單位的".nnnnnnnnnn"后綴。這兩種格式都表示新的日志開始使用的時間。
rotationtime 日志文件滾動的以秒為單位的間隔時間。
offset 相對于UTC的時差的分鐘數。如果省略,則假定為"0"并使用UTC時間。比如,要指定UTC時差為"-5小時"的地區的當地時間,則此參數應為"-300"。
filesizeM 指定以filesizeM文件大小滾動,而不是按照時間或時差滾動。
解決方法:
- ErrorLog "|/usr/local/apache2/bin/rotatelogs /home/zhangy/apache/www.test.com-error.log.%Y-%m-%d-%H_%M_%S 10M"
- CustomLog "|/usr/local/apache/bin/rotatelogs /home/zhangy/apache/www.test.com-access.log 10M" commom
當日志大小達到10M時,日志就會滾動,產生新的日志。當然你可以根據時間來進行滾動,把10M換成36000,表時日志10個小時滾動一次。
- [zhangy@BlackGhost apache]$ ls -tr |grep test
- www.test.com-error.log
- www.test.com-access.log
- www.test.com-error.log.2010-11-05-14_50_00
- www.test.com-access.log.1288968528
- www.test.com-error.log.2010-11-05-14_48_20
- www.test.com-access.log.1288968677
- www.test.com-error.log.2010-11-05-14_56_40
- www.test.com-error.log.2010-11-05-15_55_00
- www.test.com-access.log.1288969444
2,利用graceful啟動用優雅的(graceful)方法重新啟動,可以使服務器啟用新的日志文件,而不丟失原來尚未寫入的信息。為此,有必要等待一段時間,讓服務器完成正在處理的請求,并將記錄寫入到原來的日志文件。下面是日志滾動和為節省存儲空間而壓縮舊日志的例子,其實這些日志也可以不要,看個人需要
- [zhangy@BlackGhost apache]$ find . -name "*Vevb*" |xargs -i mv {} {}.bak
- [zhangy@BlackGhost apache]$ sudo /etc/init.d/apache2 graceful
- [zhangy@BlackGhost apache]$ sudo sleep 100
- [zhangy@BlackGhost apache]$ find . -name "*.bak" |xargs -i tar czvf logbak.tar.gz {}
- ./www.companysz.com-access.log.bak
- ./www.companysz.com-error.log.bak
新聞熱點
疑難解答