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

