在明白了apache日志是什么之后,我們再來實(shí)戰(zhàn)應(yīng)用一下:
把日志記錄寫入到指定程序
日志記錄并非只能寫入到文件,它還可以寫入到指定的進(jìn)程。當(dāng)我們想要把日志信息寫入數(shù)據(jù)庫、或者是某些能夠?qū)崟r顯示網(wǎng)站流量統(tǒng)計信息的程序時,這一點(diǎn)是非常有用的。
那么,如何實(shí)現(xiàn)這一點(diǎn)呢?使用TransferLog或者CustomLog指令,我們能夠指定“|”,后面再加上接收日志信息的程序名字。
如: CustomLog |/logBatch/apachelog.php common
或者 CustomLog "|/usr/bin/gzip -c >> /var/log/access_log.gz" common
下面,我們還可以使用logrotate來實(shí)現(xiàn)log的輪循機(jī)制,在win32下是一個exe文件
rotatelogs是按時間或大小來控制日志的
CustomLog "|/www/bin/rotatelogs /www/logs/secfocus/access_log 86400" common
以上為一天輪值一次日志.輪循以后的文件名為/www/logs/ secfocus/access_log.nnn,這里nnn是開始記錄
注意:當(dāng)我們進(jìn)行日志輪值的時候86400還有一個可選參數(shù)offset(偏移值) 表示相對于UTC的時差分鐘數(shù),中國是第八時區(qū),所以相差480分鐘。
CustomLog "|bin/rotatelogs.exe logs/vicp_net_access-%y%m%d.log 86400 480" common
日志的時間.
日志格式匯總:
為了便于分析 Apache 的訪問日志,Apache 的默認(rèn)配置文件中,按記錄的信息不同(用不同格式昵稱說明不同的信息)將訪問日志分為4類,并由 LogFormat 指令定義了昵稱,如表所示。
格式分類 格式昵稱 說明
普通日志格式(common log format,CLF) common 大多數(shù)日志分析軟件都支持這種格式
參考日志格式(referer log format) referer 記錄客戶訪問站點(diǎn)的用戶身份
代理日志格式(agent log format) agent 記錄請求的用戶代理
綜合日志格式(combined log format) combined 結(jié)合以上三種日志信息
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
由于綜合日志格式簡單地結(jié)合了3種日志信息,所以在配置訪問日志時,要么使用一個綜合文件進(jìn)行記錄,要么使用分離的多個(1-3)文件記錄。通常使用一個綜合日志格式文件進(jìn)行記錄,配置為:
CustomLog /var/log/apache2/access.log combined
若使用3個文件分別進(jìn)行記錄,配置為:
CustomLog /var/log/apache2/access.log common
CustomLog /var/log/apache2/referer.log referer
CustomLog /var/log/apache2/agent.log agent

