把日誌記錄寫入到指定程序
日誌記錄並非只能寫入到文件,它還可以寫入到指定的進程。當我們想要把日誌信息寫入數據庫、或者是某些能夠實時顯示網站流量統計信息的程序時,這壹點是非常有用的。
那麽,如何實現這壹點呢?使用TransferLog或者CustomLog指令,我們能夠指定“|”,後面再加上接收日誌信息的程序名字。
如: CustomLog |/logBatch/apachelog.php common
或者 CustomLog "|/usr/bin/gzip -c >> /var/log/access_log.gz" common
下面,我們還可以使用logrotate來實現log的輪循機制,在win32下是壹個exe文件
如圖:
rotatelogs是按時間或大小來控制日誌的
CustomLog "|/www/bin/rotatelogs /www/logs/secfocus/access_log 86400" common
以上為壹天輪值壹次日誌.輪循以後的文件名為/www/logs/ secfocus/access_log.nnn,這裏nnn是開始記錄
註意:當我們進行日誌輪值的時候86400還有壹個可選參數offset(偏移值) 表示相對於UTC的時差分鐘數,中國是第八時區,所以相差480分鐘。
CustomLog "|bin/rotatelogs.exe logs/vicp_net_access-%y%m%d.log 86400 480" common
日誌的時間.
日誌格式匯總:
為了便於分析 Apache 的訪問日誌,Apache 的默認配置文件中,按記錄的信息不同(用不同格式昵稱說明不同的信息)將訪問日誌分為4類,並由 LogFormat 指令定義了昵稱,如表所示。
格式分類 格式昵稱 說明
普通日誌格式(common log format,CLF) common 大多數日誌分析軟件都支持這種格式
參考日誌格式(referer log format) referer 記錄客戶訪問站點的用戶身份
代理日誌格式(agent log format) agent 記錄請求的用戶代理
綜合日誌格式(combined log format) combined 結合以上三種日誌信息
LogFormat "記錄格式說明字符串" 格式昵稱
LogFormat "%h %l %u %t /"%r/" %>s %b /"%{Referer}i/" /"%{User-Agent}i/"" combined
LogFormat "%h %l %u %t /"%r/" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
由於綜合日誌格式簡單地結合了3種日誌信息,所以在配置訪問日誌時,要麽使用壹個綜合文件進行記錄,要麽使用分離的多個(1-3)文件記錄。通常使用壹個綜合日誌格式文件進行記錄,配置為:
CustomLog /var/log/apache2/access.log combined
若使用3個文件分別進行記錄,配置為:
CustomLog /var/log/apache2/access.log common
CustomLog /var/log/apache2/referer.log referer
CustomLog /var/log/apache2/agent.log agent