Windows: <Apache安裝目錄>\logs\access.log | error.log

Linux: /usr/local/apache/logs/access_log | error_log
apache的好處 是 可以自己定制日志,定制的方法和定制的內容,如下:
參考鏈接:https://blog.csdn.net/weixin_33836223/article/details/91676238
定制日志文件的格式涉及到兩個指令,即LogFormat指令和CustomLog指令。默認httpd.conf文件提供了關於這兩個指令的幾個示例。
LogFormat指令:定義格式並為格式指定一個名字,以后我們就可以直接引用這個名字。
CustomLog指令:設置日志文件,並指明日志文件所用的格式(通常通過格式的名字)。
LogFormat指令的功能是定義日志格式並為它指定一個名字。例如,在默認的httpd.conf文件中,我們可以找到下面這行代碼:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
該指令創建了一種名為“common”的日志格式,日志的格式在雙引號包圍的內容中指定。格式字符串中的每一個變量代表着一項特定的信息,這些信息按照格式串規定的次序寫入到日志文件。 Apache文檔已經給出了所有可用於格式串的變量及其含義,下面是其譯文:
%a: 遠程IP地址
%A: 本地IP地址
%B: 已發送的字節數,不包含HTTP頭
%b: CLF格式的已發送字節數量,不包含HTTP頭。例如當沒有發送數據時,寫入‘-’而不是0。
%{FOOBAR}e: 環境變量FOOBAR的內容
%f: 文件名字
%h: 遠程主機
%H 請求的協議
%Foobar}i: Foobar的內容,發送給服務器的請求的標頭行。
%l: 遠程登錄名字(來自identd,如提供的話)
%m: 請求的方法
%{Foobar}n: 來自另外一個模塊的注解“Foobar”的內容
%{Foobar}o: Foobar的內容,應答的標頭行
%p: 服務器響應請求時使用的端口
%P: 響應請求的子進程ID。
%q: 查詢字符串(如果存在查詢字符串,則包含“?”后面的部分;否則,它是一個空字符串。)
%r: 請求的第一行
%s: 狀態。對於進行內部重定向的請求,這是指*原來*請求的狀態。如果用%...>s,則是指后來的請求。
%t: 以公共日志時間格式表示的時間(或稱為標准英文格式)
%{format}t: 以指定格式format表示的時間
%T: 為響應請求而耗費的時間,以秒計
%u: 遠程用戶(來自auth;如果返回狀態(%s)是401則可能是偽造的)
%U: 用戶所請求的URL路徑
%v: 響應請求的服務器的ServerName
%V: 依照UseCanonicalName設置得到的服務器名字
分析前面來自默認httpd.conf文件的LogFormat指令示例,可以看出它創建了一種名為“common”的日志格式,其中包括:遠程主機,遠程登錄名字,遠程用戶,請求時間,請求的第一行代碼,請求狀態,以及發送的字節數。 LogFormat "%V %h %l %u %t \"%r\" %>s %b" common
【補充】"<"和">"修飾符可以用來指定對於已被內部重定向的請求是選擇原始的請求還是選擇最終的請求。默認情況下,%s, %U, %T, %D, %r 使用原始請求,而所有其他格式串則選擇最終請求。例如,%>s 可以用於記錄請求的最終狀態,而 %<u 則記錄一個已經被內部重定向到非認證資源的請求的原始認證用戶。
如果在“%”和變量之間放入了一個或者多個HTTP狀態代碼,則只有當請求返回的狀態代碼屬於指定的狀態代碼之一時,變量所代表的內容才會被記錄。例如,如果我們想要記錄的是網站的所有無效鏈接,那么可以使用:
LogFormat %404{Referer}i BrokenLinks
反之,如果我們想要記錄那些狀態代碼不等於指定值的請求,只需加入一個“!”符號即可:
LogFormat %!200U SomethingWrong
至於如何修改 apache的日志,也很簡單只需修改apache的配置文件文件就可以了。
術語返回碼
返回碼
"100" : Continue 客戶必須繼續發出請求
"101" : witching Protocols 客戶要求服務器根據請求轉換HTTP協議版本 200交易成功
"200" : OK 交易成功
"201" : Created 提示知道新文件的URL
"202" : Accepted 接受和處理、但處理未完成
"203" : Non-Authoritative Information 返回信息不確定或不完整
"204" : No Content 請求收到,但返回信息為空
"205" : Reset Content 服務器完成了請求,用戶代理必須復位當前已經瀏覽過的文件
"206" : Partial Content 服務器已經完成了部分用戶的GET請求
"300" : Multiple Choices 請求的資源可在多處得到
"301" : Moved permanently 刪除請求數據
"302" : Found 在其他地址發現了請求數據
"303" : See Other 建議客戶訪問其他URL或訪問方式
"304" : Not Modified 客戶端已經執行了GET,但文件未變化
"305" : Use Proxy 請求的資源必須從服務器指定的地址得到
"306" 前一版本HTTP中使用的代碼,現行版本中不再使用
"307" : Temporary Redirect 申明請求的資源臨時性刪除
"400" : Bad Request 錯誤請求,如語法錯誤
"401" : Unauthorized 請求授權失敗
"402" : Payment Required 保留有效ChargeTo頭響應
"403" : Forbidden 請求不答應
"404" : Not Found 沒有發現文件、查詢或URl
"405" : Method Not Allowed 用戶在Request-Line字段定義的方法不答應
"406" : Not Acceptable 根據用戶發送的Accept拖,請求資源不可訪問
"407" : Proxy Authentication Required 類似401,用戶必須首先在代理服務器上得到授權
"408" : Request Time-out 客戶端沒有在用戶指定的餓時間內完成請求
"409" : Conflict 對當前資源狀態,請求不能完成
"410" : Gone 服務器上不再有此資源且無進一步的參考地址
"411" : Length Required 服務器拒絕用戶定義的Content-Length屬性請求
"412" : precondition Failed 一個或多個請求頭字段在當前請求中錯誤
"413" : Request Entity Too Large 請求的資源大於服務器答應的大小
"414" : Request-URI Too Large 請求的資源URL長於服務器答應的長度
"415" : unsupported Media Type 請求資源不支持請求項目格式
"416" : Requested range not satisfiable請求中包含Range請求頭字段,在當前請求資源范圍內沒有range指示值,請求也不包含If-Range請求頭字段
"417" : Expectation Failed 服務器不滿足請求Expect頭字段指定的期望值,假如是代理服務器,
"500" : Internal Server Error 服務器產生內部錯誤
"501" : Not Implemented 服務器不支持請求的函數
"502" : Bad Gateway 服務器暫時不可用,有時是為了防止發生系統過載
"503" : Service Unavailable 服務器過載或暫停維修
"504" : Gateway Time-out 關口過載,服務器使用另一個關口或服務來響應用戶,等待時間設定值較長
"505" : HTTP Version not supported 服務器不支持或拒絕支請求頭中指定的HTTP版本
