關於Apache的日誌

2021-08-31 10:18:33 字數 3110 閱讀 1575

關於apache的日誌

apche日誌系列(1):訪問日誌

一、訪問日誌的格式

apache內建了記錄伺服器活動的功能,這就是它的日誌功能。這個文章介紹的就是apache的訪問日誌、錯誤日誌,以及如何分析日誌資料,如何定製apache日誌,如何從日誌資料生成統計報表等內容。

如果apache的安裝方式是預設安裝,伺服器一執行就會有兩個日誌檔案生成。這兩個檔案是access_log和error_log(在win上是access.log和error.log)。採用預設安裝方式時,這些檔案可以在/usr/local/apache/logs下找到;對於windows系統,這些日誌檔案將儲存在apache安裝目錄的logs子目錄。不同的包管理器會把日誌檔案放到各種不同的位置,所以你可能需要找找其他的地方,或者通過配置檔案檢視這些日誌檔案配置到了什麼地方。 【總結】訪問日誌和錯誤日誌的 位置 和 名字 :

windows: new("/some/log/file");

while (defined($line=$file->read))

apche日誌系列(3):定製日誌

有時候我們需要定製apache預設日誌的格式和內容,比如增加或減少日誌所記錄的資訊、改變預設日誌檔案的格式等。本文介紹可以用日誌記錄的所有資訊,以及如何設定apache使其記錄這些資訊。

一、定義日誌格式

定製日誌檔案的格式涉及到兩個指令,即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。

%e: 環境變數foobar的內容

%f: 檔案名字

%h: 遠端主機

%h 請求的協議

%foobar}i: foobar的內容,傳送給伺服器的請求的標頭行。

%l: 遠端登入名字(來自identd,如提供的話)

%m: 請求的方法

%n: 來自另外乙個模組的註解「foobar」的內容

%o: foobar的內容,應答的標頭行

%p: 伺服器響應請求時使用的埠

%p: 響應請求的子程序id。

%q: 查詢字串(如果存在查詢字串,則包含「?」後面的部分;否則,它是乙個空字串。)

%r: 請求的第一行

%s: 狀態。對於進行內部重定向的請求,這是指*原來*請求的狀態。如果用%...>s,則是指後來的請求。

%t: 以公共日誌時間格式表示的時間(或稱為標準英文格式)

%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 可以用於記錄請求的最終狀態,而 % &single;/usr/local/apache/logs/access_log&single;,

count => 5,

gzip => &single;/bin/gzip&single;,

signal => sub

); **不多,perl模組logfile::rotate負責了所有具體操作任務。執行這個程式,我們將得到名為access_log.1.gz、 access_log.2.gz等的檔案。它可以幫助我們避免磁碟空間的不足,使得我們能夠儲存任意多的檔案檔案。

三、多個虛擬主機的日誌

曾經有好幾個人問起,當同一臺機器上執行著多個虛擬主機時應該如何分析日誌?我想,他們是先把所有虛擬主機的日誌記錄都儲存到了同一臺機器,然後又企圖把這個日誌檔案按照虛擬主機的不同分割成多個部分。

徹底解決這個問題的方法是一開始就不要把所有虛擬主機的日誌記錄都寫入到同乙個檔案。雖然我知道確實存在這樣的工具,它們能夠把多個虛擬主機混合的日誌記錄根據虛擬主機配置分開,指出哪些請求針對哪個虛擬主機發出,然後分別生成報表。然而,這種方法看起來實在是太麻煩了。

為每乙個虛擬主機分別指定日誌檔案時,我們只需在每個virtualhost區域指定該主機的日誌檔案。此後,當需要製作報表時,我們就可以分別地處理各個日誌檔案。

但這裡必須注意一下可用檔案控制代碼的問題。也就是說,如果某台伺服器上執行的虛擬主機多達數百個,每個虛擬主機都有單獨的日誌檔案,系統可能會出現可用檔案控制代碼不足的問題,它可能導致系統不穩定甚至導致系統崩潰。然而,只有當伺服器上執行的虛擬主機數量非常龐大時,我們才有關注這個問題的必要。

apche日誌系列(1):訪問日誌

apche日誌系列(2):錯誤日誌

apche日誌系列(3):定製日誌

apche日誌系列(4):日誌分析 apche日誌系列(5):高階技術

<完>

關於apache日誌

在網上看了很多一些別人關於apache日誌的文章,發現因為時間比較久了,很多東西都變了,故將一些東西總結下來,以做備用,如有錯誤,還請指教 環境 ubuntu 14.04 apache 安裝完畢後,按照網上大多數的說話,他的日誌路徑可以通過檢視apache.conf來進行檢視,通過執行命令 grep...

apache的日誌分析

1,檢視apache程序 2,檢視80埠的tcp連線 netstat tan grep established grep 80 wc l 3,通過日誌檢視當天ip連線數,過濾重複 cat access log grep 20 oct 2008 awk sort uniq c sort nr 4,當天...

Apache 日誌的配置

對於大訪問量的 日誌不可能只記錄在乙個檔案裡面,1萬日誌大概就有50m,還有乙個可能就是你要跟蹤使用者的行為,可能需要一些額外的資訊,怎麼把這些東西記錄到apache日誌裡面。apache提供了很出色的日誌配置方式,具體的配置可以參考 我這裡只是簡單的舉一些例子。1。問題一 實現按照小時記錄日誌 a...