GB | BIG5
|
| 首頁 > 應用技術 > Apache > 正文 |
 |
| Apche日志系列(1):訪問日志 |
| http://cn.internet.com 仙人掌工作室 編譯 (2001-05-16 20:55:54) |
想要知道什人在什時候瀏覽了網站的哪些內容嗎?查看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服務器的訪問活動。下面是訪問日志中一個典型的記錄:
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。
上例日志記錄中的第二項是空白,用一個“-”佔位符替代。實際上絕大多數時候這一項都是如此。這個位置用記錄瀏覽者的標識,這不只是瀏覽者的登錄名字,而是瀏覽者的email地址或者其他唯一標識符。這個信息由identd返回,或者直接由瀏覽器返回。很早的時候,那時Netscape 0.9還佔據著統治地位,這個位置往往記錄著瀏覽者的email地址。然而,由有人用它來收集郵件地址和發送垃圾郵件,所以它未能保留多久,很久之前市場上幾乎所有的瀏覽器就取消了這項功能。因此,到了今天,我們在日志記錄的第二項看到email地址的機會已經微乎其微了。
日志記錄的第三項也是空白。這個位置用記錄瀏覽者進行身份驗証時提供的名字。當然,如果網站的某些內容要求用戶進行身份驗証,那這項信息是不會空白的。但是,對大多數網站來說,日志文件的大多數記錄中這一項仍舊是空白的。
日志記錄的第四項是請求的時間。這個信息用方括號包圍,而且採用所謂的“公共日志格式”或“標準英文格式”。因此,上例日志記錄表示請求的時間是2000年8月19日星期三14:47:37。時間信息最的“-0400”表示服務器所處時區位UTC之前的4小時。
日志記錄的第五項信息或許是整個日志記錄中最有用的信息,它告訴我們服務器收到的是一個什樣的請求。該項信息的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 資源 協議”。
在上例中,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開頭的狀態代碼表示服務器遇到了某個錯誤。
日志記錄的第七項表示發送給客戶端的總字節數。它告訴我們傳輸是否被打斷(即,該數值是否和文件的大小相同)。把日志記錄中的這些值加起來就可以得知服務器在一天、一周或者一月內發送了多少數據。
二、配置訪問日志
訪問日志文件的位置實際上是一個配置選項。如果我們檢查httpd.conf配置文件,可以看到該文件中有如下這行內容:
CustomLog /usr/local/apache/logs/access_log common
注意,對版本較早的Apache服務器,這行內容可能略有不同。它使用的可能不是CustomLog指令,而是TransferLog指令。如果你的服務器屬這類情況,建議你盡可能地早日升級服務器。
CustomLog指令指定了保存日志文件的具體位置以及日志的格式。至如何定制日志文件的格式以及內容,我們將在這個《Apache日志》系列文章的面幾篇討論。上面這行指令指定的是common日志格式,自從有了Web服務器開始,common格式就是它的標準格式。由此我們也可以理解,雖然幾乎不再有任何客戶程序向服務器提供用戶的標識信息,但訪問日志卻還保留著第二項內容。
CustomLog指令中的路徑是日志文件的路徑。注意,由日志文件是由HTTP用戶打開的(用User指令指定),因此必須注意這個路徑要有安全保証,防止該文件被隨意改寫。
《Apache日志》系列文章的面幾篇將繼續介紹:Apache錯誤日志,定制日志的格式和內容,如何將日志內容寫入指定的程序而不是文件,如何從日志文件獲得一些非常有用的統計信息,等等。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
Apche日志系列(5):高級技術 (2001-05-16 20:57:21) Apche日志系列(4):日志分析 (2001-05-16 20:57:02) Apche日志系列(3):定制日志 (2001-05-16 20:56:44) Apche日志系列(2):錯誤日志 (2001-05-16 20:56:18) Apche日志系列(1):訪問日志 (2001-05-16 20:55:54)
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |