Apache log

Apache log儲存目錄
centos預設儲存在 /var/log/httpd/
ubuntu預設儲存在 /var/log/apache2/
ps:
看apache組態檔查log存那裡
ex:
# grep ErrorLog /etc/apache2/apache2.conf
# grep ErrorLog /etc/httpd/conf/httpd.conf

error_log 錯誤記錄檔:記錄各種可能的錯誤訊息
格式為:日期時間,錯誤層級,用戶端ip,錯誤內容
日期時間:星期 月 日 時:分:秒 年
錯誤層級:預設為 loglevel warn
 debug:會產生最多的資訊,無論執行任何工作與其他無關的,均會記錄此層級的記錄
 info:一般資訊
 notice:正常但重要資訊,例如開機或關機時的錯誤,不會理會loglevel的設定
 warm:警告訊息,不會產生伺服器上的操作錯誤,而只是要指定管理員應採取若干的動作
 error:中等程度錯誤訊息,會停止對用戶端瀏覽器的回應
 crit:緊急訊息,可能引起伺服器對某些要求的停止回應,因一些子程序己遭損毀
 alert:需立即處理,這些錯誤會使子程序中斷,但父程序不會收影響
 emerg:嚴重錯誤訊息,會引起伺服器的中斷,或網頁伺服器無法使用

error log sample
as below 
[Fri Dec 16 01:46:23 2005] [error] [client 1.2.3.4] Directory index forbidden by rule: /home/test/
[Fri Dec 16 01:54:34 2005] [error] [client 1.2.3.4] Directory index forbidden by rule: /apache/web-data/test2
[Fri Dec 16 02:25:55 2005] [error] [client 1.2.3.4] Client sent malformed Host header
[Mon Dec 19 23:02:01 2005] [error] [client 1.2.3.4] user test: authentication failure for “/~dcid/test1”: Password Mismatch

… 

access_log 存取記錄檔:也叫傳送記錄檔transfer log,記錄所有使用者連線狀況,要分析系統負載可參考
預設用combined格式記錄,可選格式與格式內容有:
 combined:”%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i””
 common:”%h %l %u %t “%r” %>s %b”
 referer:”%{Refereri}i -> %U”
 agent:”%{User-Agent}i”

格式說明如下
%h Remote host(用戶端ip),若hostnamelookups on 則記錄主機名稱,off則記錄ip
%l 驗證,當identitycheck on及用戶端電腦執行identd才會顯示
%u 用戶端使用者名稱
%t 日期時間,日/月/年:時:分:秒:時區
%r 用戶端使用http要求(ex,GET)所傳送的第一行訊息,由””雙引號包覆
%s Status(回應http狀態碼),由3位數組成,若希望記錄最後狀態代碼,則需用%>s
%b Size of response in bytes(依clf格式送出位元數),回應文件大小,但不包括header大小,若無送出任何位元會顯示[-]
%{表頭}i 自用戶端的http表頭訊息,種類有referer,user-agent…等
%{表頭}o 來自客戶端的http表頭訊息,有content-type,last-modified…等
%{備註}n 用來在模組和伺服器核心間交換資訊用,常見有cookie
%{變數}e 記錄由伺服器定義的環境變數,例如unique_id
%I byte received 
%O byte sent 
%D 記錄回應時間(microseconds)
refer:
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html


http表頭訊息,可用%{表頭}i,%{表頭}o記錄
user-agent:有關瀏覽器及其平台之資訊
referer:連結至目前請求網頁的url
accept:告知伺服端可處理並願意接收那種網頁內容
last-modified:網頁上次修改時間
content-type:網頁的mime型態

http要求方法,用%r記錄
GET filename HTTP/1.1:要求讀取filename網頁,並採用http1.1的版本
HEAD :只要求讀取網頁訊息表頭
PUT :寫入網頁,取代儲存
POST :寫入網頁,將資料附加上去
TRACE :回送傳回的要求,用於除錯
DELETE :移除頁面,基於權限問題可能會失敗
CONNECT :保留未來使用
OPTIONS :查詢某些選項

http status code(狀態碼),用%s記錄
refer
https://systw.net/note/af/sblog/more.php?id=65
ps
HTTP定義於RFC2616

access log sample
as below
127.0.0.1 – – [28/Jul/2006:10:22:04 -0300] “GET / HTTP/1.0” 200 2216
127.0.0.1 – – [28/Jul/2006:10:27:32 -0300] “GET /hidden/ HTTP/1.0” 404 7218
127.0.0.1 – – [13/Sep/2006:07:01:53 -0700] “PROPFIND /svn/[xxxx]/Extranet/branches/SOW-101 HTTP/1.1” 401 587

參考來源
apache2.0深入研究
apache錦襄妙技
電腦網路4th
http://ossec-docs.readthedocs.org