Apche日誌系列 3 定製日誌

2021-06-28 03:15:23 字數 1970 閱讀 1500

有時候我們需要定製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可以用於記錄請求的最終狀態,而 %如果在「%」和變數之間放入了乙個或者多個http狀態**,則只有當請求返回的狀態**屬於指定的狀態**之一時,變數所代表的內容才會被記錄。例如,如果我們想要記錄的是**的所有無效鏈結,那麼可以使用:  

logformat %404i brokenlinks  

反之,如果我們想要記錄那些狀態**不等於指定值的請求,只需加入乙個「!」符號即可: 

logformat %!200u somethingwrong  

Apche日誌系列 1 訪問日誌

本文分五個部分 訪問日誌 錯誤日誌 定製日誌 日誌分析 其他用法。摘自永遠的linux,做了一些修整。想要知道什麼人在什麼時候瀏覽了 的哪些內容嗎?檢視apache的訪問日誌就可以知道。訪問日誌是apache的標準日誌,本文詳細解釋了訪問日誌的內容以及相關選項的配置。一 訪問日誌的格式 apache...

Apche日誌系列 4 日誌分析

儘管日誌檔案中包含著大量有用的資訊,但這些資訊只有在經過深入挖掘之後才能夠最大限度地發揮作用。本文首先討論了能夠從日誌檔案獲得的資訊以及不能從日誌檔案獲得的資訊,然後介紹了幾種優秀的日誌分析工具以及如何自己程式設計分析日誌檔案。一 可以得到哪些資訊 4月4日 我們面臨的問題是,雖然日誌檔案中包含了大...

Apche日誌系列 5 高階技術

這是 apache日誌 系列文章的最後一篇,除了補充說明前面幾篇文章之外,另外討論了三個問題 如何將日誌記錄寫入指定的程式而不是日誌檔案,如何輪換日誌防止磁碟空間不足,多虛擬主機環境下的日誌檔案管理。一 把日誌記錄寫入到指定程式 日誌記錄並非只能寫入到檔案,它還可以寫入到指定的程序。當我們想要把日誌...