1. 程式人生 > >LAMP架構十一( Apache訪問日誌切割)

LAMP架構十一( Apache訪問日誌切割)

十一、訪問日誌切割

日誌一直記錄總有一天會把整個磁碟沾滿,所以有必要讓它自動切割,並刪除老的日誌檔案。保證磁碟永遠寫不滿,且更方便的管理日誌。
rotatelogs是apache自帶的日誌切割工具,配置訪問日誌交由rotatelogs處理:


[[email protected] ~]# /etc/httpd/conf.d/virtual.conf
虛擬主機增加日誌記錄規則:
<VirtualHost *:8090>                                                                            80是http的服務埠,不用改
 ServerAdmin

[email protected]                                                    網站管理員郵箱,可不填寫
 DocumentRoot "/var/www/html/a"                                                        虛擬主機根目錄放網站程式
    ServerName a.com                                                                           網站名,域名                  
    ServerAlias www.a.com                                                                    網站別名,域名別名,可寫多個要用空格隔開 
    <IfModule mod_rewrite.c>                                                                重定向功能:需要mod_rewrite模組支援
        RewriteEngine on                                                                                              開啟rewrite功能
        RewriteCond %{HTTP_HOST} !^www.a.com$                              將非www.a.com的域名請求進行跳轉
        RewriteRule ^/(.*)$ http://www.baidu.com/$1 [R=301,L]                 狀態碼301永久跳轉,L=last,跳一次
                                                   定義跳轉規則,將以^/(.*)$開頭結尾的域名請求跳轉,$1代表^/(.*)$
    </IfModule>
    ErrorLog "logs/test.com-error_log"                                                                     錯誤日誌儲存路徑
    SetEnvIf Request_URI ".*\.gif$" img                                             日誌記錄規則,變量表示.gif檔案
    SetEnvIf Request_URI ".*\.jpg$" img                                            日誌記錄規則,變量表示.jpg檔案
    SetEnvIf Request_URI ".*\.png$" img                                            日誌記錄規則,變量表示.png檔案
    SetEnvIf Request_URI ".*\.bmp$" img                                          日誌記錄規則,變量表示.bmp檔案
    SetEnvIf Request_URI ".*\.swf$" img                                           日誌記錄規則,變量表示.swf檔案
    SetEnvIf Request_URI ".*\.js$" img                                               日誌記錄規則,變量表示.js檔案
    SetEnvIf Request_URI ".*\.css$" img                                             日誌記錄規則,變量表示.cs檔案
    CustomLog "| /usr/sbin/rotatelogs -l logs/a.com-access_%Y%m%d.log 86400" combined env=!img

</VirtualHost>  

注意最前面有個豎槓,!感嘆號是取反,-l是為了讓它以當前系統時間為準,如果不指定。他會以utc時間為基準;不記錄變數所表示的檔案訪問記錄,並將日誌交由rotatelogs處理,%Y%m%d分別年月日.log格式儲存,且規定每86400秒儲存一次,86400秒=1天

測試語法並重新載入配置
 [[email protected] conf.d]# /usr/sbin/apachectl  -t
Syntax OK
 [[email protected] conf.d]# /usr/sbin/apachectl  graceful

檢視日誌檔案

原先的日誌資訊

產生日誌,按照時間生成了20181129的日誌