在明白了apache日志是什么之后,我們?cè)賮韺?shí)戰(zhàn)應(yīng)用一下:
把日志記錄寫入到指定程序
日志記錄并非只能寫入到文件,它還可以寫入到指定的進(jìn)程。當(dāng)我們想要把日志信息寫入數(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來實(shí)現(xiàn)log的輪循機(jī)制,在win32下是一個(gè)exe文件
rotatelogs是按時(shí)間或大小來控制日志的
CustomLog "|/www/bin/rotatelogs /www/logs/secfocus/access_log 86400" common
以上為一天輪值一次日志.輪循以后的文件名為/www/logs/ secfocus/access_log.nnn,這里nnn是開始記錄
注意:當(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 的訪問日志,Apache 的默認(rèn)配置文件中,按記錄的信息不同(用不同格式昵稱說明不同的信息)將訪問日志分為4類,并由 LogFormat 指令定義了昵稱,如表所示。
格式分類 格式昵稱 說明
普通日志格式(common log format,CLF) common 大多數(shù)日志分析軟件都支持這種格式
參考日志格式(referer log format) referer 記錄客戶訪問站點(diǎn)的用戶身份
代理日志格式(agent log format) agent 記錄請(qǐng)求的用戶代理
綜合日志格式(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ǎn)單地結(jié)合了3種日志信息,所以在配置訪問日志時(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

