天天看點

Apache日志:通路日志(一)

Apache日志:通路日志(一)

時間:2003-09-03 08:00來源:BitsCN.com 作者:BitsCN整理

  

  想要知道什麼人在什麼時候浏覽了網站的哪些内容嗎?檢視Apache的通路日志就可以知道。通路日志是Apache的标準日志,本文詳細解釋了通路日志的内容以及相關選項的配置。

  

  一、通路日志的格式

     Apache内建了記錄伺服器活動的功能,這就是它的日志功能。這個《Apache日志》系列文章介紹的就是Apache的通路日志、錯誤日志,以及如何分析日志資料,如何定制Apache日志,如何從日志資料生成統計報表等内容。

     如果Apache的安裝方式是預設安裝,伺服器一運作就會有兩個日志檔案生成。這兩個檔案是access_log(在Windows上是access.log)和error_log(在Windows上是error.log)。采用預設安裝方式時,這些檔案可以在/usr/local/apache/logs下找到;對于Windows系統,這些日志檔案将儲存在Apache安裝目錄的logs子目錄。不同的包管理器會把日志檔案放到各種不同的位置,是以你可能需要找找其他的地方,或者通過配置檔案檢視這些日志檔案配置到了什麼地方。

     正如其名字所示,通路日志access_log記錄了所有對Web伺服器的通路活動。下面是通路日志中一個典型的記錄:

中國網管聯盟www.bitscn.com

  216.35.116.91 - - [19/Aug/2000:14:47:37 -0400] "GET / HTTP/1.0" 200 654

    這行内容由7項構成,上面的例子中有兩項空白,但整行内容仍舊分成了7項。

     第一項資訊是遠端主機的位址,即它表明通路網站的究竟是誰。在上面的例子中,通路網站的主機是216.35.116.91。随便說一句,這個位址屬于一台名為si3001.inktomi.com的機器(要找出這個資訊,可以使用nslookup工具查找DNS),inktomi.com是一家制作Web搜尋軟體的公司。可以看出,僅僅從日志記錄的第一項出發,我們就可以得到有關通路者的不少資訊。

     預設情況下,第一項資訊隻是遠端主機的IP位址,但我們可以要求Apache查出所有的主機名字,并在日志檔案中用主機名字來替代IP位址。然而,這種做法通常不值得推薦,因為它将極大地影響伺服器記錄日志的速度,進而也就減低了整個網站的效率。另外,有許多工具能夠将日志檔案中的IP位址轉換成主機名字,是以要求Apache記錄主機名字替代IP位址是得不償失的。

     然而,如果确實有必要讓Apache找出遠端主機的名字,那麼我們可以使用如下指令:

  HostNameLookups on

     如果HostNameLookups設定成double而不是on,日志記錄程式将對它找到的主機名字進行反向查找,驗證該主機名字确實指向了原來出現的IP位址。預設情況下HostNameLookups設定為off。

feedom.net

     上例日志記錄中的第二項是空白,用一個“-”占位符替代。實際上絕大多數時候這一項都是如此。這個位置用于記錄浏覽者的辨別,這不隻是浏覽者的登入名字,而是浏覽者的email位址或者其他唯一辨別符。這個資訊由identd傳回,或者直接由浏覽器傳回。很早的時候,那時Netscape 0.9還占據着統治地位,這個位置往往記錄着浏覽者的email位址。然而,由于有人用它來收集郵件位址和發送垃圾郵件,是以它未能保留多久,很久之前市場上幾乎所有的浏覽器就取消了這項功能。是以,到了今天,我們在日志記錄的第二項看到email位址的機會已經微乎其微了。

     日志記錄的第三項也是空白。這個位置用于記錄浏覽者進行身份驗證時提供的名字。當然,如果網站的某些内容要求使用者進行身份驗證,那麼這項資訊是不會空白的。但是,對于大多數網站來說,日志檔案的大多數記錄中這一項仍舊是空白的。

     日志記錄的第四項是請求的時間。這個資訊用方括号包圍,而且采用所謂的“公共日志格式”或“标準英文格式”。是以,上例日志記錄表示請求的時間是2000年8月19日星期三14:47:37。時間資訊最後的“-0400”表示伺服器所處時區位于UTC之前的4小時。

     日志記錄的第五項資訊或許是整個日志記錄中最有用的資訊,它告訴我們伺服器收到的是一個什麼樣的請求。該項資訊的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 資源 協定”。 54com.cn

     在上例中,METHOD是GET,其他經常可能出現的METHOD還有POST和HEAD。此外還有不少可能出現的合法METHOD,但主要就是這三種。

     RESOURCE是指浏覽者向伺服器請求的文檔,或URL。在這個例子中,浏覽者請求的是“/”,即網站的首頁或根。大多數情況下,“/”指向DocumentRoot目錄的index.html文檔,但根據伺服器配置的不同它也可能指向其他檔案。

     PROTOCOL通常是HTTP,後面再加上版本号。版本号或者是1.0,或者是1.1,但出現1.0的時候比較多。我們知道,HTTP協定是Web得以工作的基礎,HTTP/1.0是HTTP協定的早期版本,而1.1是最近的版本。目前大多數Web客戶程式仍使用1.0版本的HTTP協定。

     日志記錄的第六項資訊是狀态代碼。它告訴我們請求是否成功,或者遇到了什麼樣的錯誤。大多數時候,這項值是200,它表示伺服器已經成功地響應浏覽器的請求,一切正常。此處不準備給出狀态代碼的完整清單以及解釋它們的含義,請參考相關資料了解這方面的資訊。但一般地說,以2開頭的狀态代碼表示成功,以3開頭的狀态代碼表示由于各種不同的原因使用者請求被重定向到了其他位置,以4開頭的狀态代碼表示用戶端存在某種錯誤,以5開頭的狀态代碼表示伺服器遇到了某個錯誤。

54com.cn

     日志記錄的第七項表示發送給用戶端的總位元組數。它告訴我們傳輸是否被打斷(即,該數值是否和檔案的大小相同)。把日志記錄中的這些值加起來就可以得知伺服器在一天、一周或者一月内發送了多少資料。

  二、配置通路日志

     通路日志檔案的位置實際上是一個配置選項。如果我們檢查httpd.conf配置檔案,可以看到該檔案中有如下這行内容:

  CustomLog /usr/local/apache/logs/access_log common

     注意,對于版本較早的Apache伺服器,這行内容可能略有不同。它使用的可能不是CustomLog指令,而是TransferLog指令。如果你的伺服器屬于這類情況,建議你盡可能地早日更新伺服器。

     CustomLog指令指定了儲存日志檔案的具體位置以及日志的格式。至于如何定制日志檔案的格式以及内容,我們将在這個《Apache日志》系列文章的後面幾篇讨論。上面這行指令指定的是common日志格式,自從有了Web伺服器開始,common格式就是它的标準格式。由此我們也可以了解,雖然幾乎不再有任何客戶程式向伺服器提供使用者的辨別資訊,但通路日志卻還保留着第二項内容。

     CustomLog指令中的路徑是日志檔案的路徑。注意,由于日志檔案是由HTTP使用者打開的(用User指令指定),是以必須注意這個路徑要有安全保證,防止該檔案被随意改寫。 網管網bitsCN.com

     《Apache日志》系列文章的後面幾篇将繼續介紹:Apache錯誤日志,定制日志的格式和内容,如何将日志内容寫入指定的程式而不是檔案,如何從日志檔案獲得一些非常有用的統計資訊,等等。

繼續閱讀