欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

<-
Apache > HTTP Server > 文檔 > 版本2.2 > 模塊
   致謝 | 譯者聲明 | 本篇譯者:金步國 | 本篇譯稿最后更新:2006年1月26日 | 獲取最新版本

Apache模塊 mod_log_config

說明允許記錄日志和定制日志文件格式
狀態(tài)基本(B)
模塊名log_config_module
源文件mod_log_config.c

概述

本模塊提供了靈活的方法將客戶請求記錄到日志。日志可以用自定義的格式直接寫入文件,或者傳送到一個外部程序繼續(xù)處理。條件日志功能可以實現(xiàn)根據(jù)請求的特征來決定一個日志信息是否被包含在最終的日志記錄里面。

本模塊提供了三個指令:TransferLog指令用來指定日志文件,LogFormat指令用來定義日志格式,CustomLog指令可以同時完成指定日志文件和定義日志格式。TransferLogCustomLog指令在每個服務(wù)器上都可以被多次使用,以便將同一個請求記錄到多個文件中。

top

定制日志文件格式

LogFormatCustomLog指令的格式化參數(shù)是一個字符串。這個字符串會在每次請求發(fā)生的時候,被記錄到日志中去。它可以包含將被原樣寫入日志的文本字符串以及C風(fēng)格的控制字符"\n"和"\t"以實現(xiàn)換行與制表。文本中的引號和反斜杠應(yīng)通過"\"來轉(zhuǎn)義。

請求本身的情況將通過在格式字符串中放置各種"%"轉(zhuǎn)義符的方法來記錄,它們在寫入日志文件時,根據(jù)下表的定義進(jìn)行轉(zhuǎn)換:

格式字符串描述
%%百分號(Apache2.0.44或更高的版本)
%a遠(yuǎn)端IP地址
%A本機(jī)IP地址
%B除HTTP頭以外傳送的字節(jié)數(shù)
%b以CLF格式顯示的除HTTP頭以外傳送的字節(jié)數(shù),也就是當(dāng)沒有字節(jié)傳送時顯示'-'而不是0。
%{Foobar}C在請求中傳送給服務(wù)端的cookieFoobar的內(nèi)容。
%D服務(wù)器處理本請求所用時間,以微為單位。
%{FOOBAR}e環(huán)境變量FOOBAR的值
%f文件名
%h遠(yuǎn)端主機(jī)
%H請求使用的協(xié)議
%{Foobar}i發(fā)送到服務(wù)器的請求頭Foobar:的內(nèi)容。
%l遠(yuǎn)端登錄名(由identd而來,如果支持的話),除非IdentityCheck設(shè)為"On",否則將得到一個"-"。
%m請求的方法
%{Foobar}n來自另一個模塊的注解Foobar的內(nèi)容。
%{Foobar}o應(yīng)答頭Foobar:的內(nèi)容。
%p服務(wù)器服務(wù)于該請求的標(biāo)準(zhǔn)端口。
%P為本請求提供服務(wù)的子進(jìn)程的PID。
%{format}P服務(wù)于該請求的PID或TID(線程ID),format的取值范圍為:pidtid(2.0.46及以后版本)以及hextid(需要APR1.2.0及以上版本)
%q查詢字符串(若存在則由一個"?"引導(dǎo),否則返回空串)
%r請求的第一行
%s狀態(tài)。對于內(nèi)部重定向的請求,這個狀態(tài)指的是原始請求的狀態(tài),---%>s則指的是最后請求的狀態(tài)。
%t時間,用普通日志時間格式(標(biāo)準(zhǔn)英語格式)
%{format}t時間,用strftime(3)指定的格式表示的時間。(默認(rèn)情況下按本地化格式)
%T處理完請求所花時間,以秒為單位。
%u遠(yuǎn)程用戶名(根據(jù)驗證信息而來;如果返回status(%s)為401,可能是假的)
%U請求的URL路徑,不包含查詢字符串。
%v對該請求提供服務(wù)的標(biāo)準(zhǔn)ServerName。
%V根據(jù)UseCanonicalName指令設(shè)定的服務(wù)器名稱。
%X請求完成時的連接狀態(tài):
X=連接在應(yīng)答完成前中斷。
+=應(yīng)答傳送完后繼續(xù)保持連接。
-=應(yīng)答傳送完后關(guān)閉連接。

(在1.3以后的版本中,這個指令是%c,但這樣就和過去的SSL語法:%{var}c沖突了)

%I接收的字節(jié)數(shù),包括請求頭的數(shù)據(jù),并且不能為零。要使用這個指令你必須啟用mod_logio模塊。
%O發(fā)送的字節(jié)數(shù),包括請求頭的數(shù)據(jù),并且不能為零。要使用這個指令你必須啟用mod_logio模塊。

修飾符

可以緊跟在"%"后面加上一個逗號分隔的狀態(tài)碼列表來限制記錄的條目。例如,"%400,501{User-agent}i"只記錄狀態(tài)碼400和501發(fā)生時的User-agent頭內(nèi)容;不滿足條件時用"-"代替。狀態(tài)碼前還可以加上"!"前綴表示否定,"%!200,304,302{Referer}i"記錄所有不同于200,304,302的狀態(tài)碼發(fā)生時的Referer頭內(nèi)容。

"<"和">"修飾符可以用來指定對于已被內(nèi)部重定向的請求是選擇原始的請求還是選擇最終的請求。默認(rèn)情況下,%s, %U, %T, %D, %r 使用原始請求,而所有其他格式串則選擇最終請求。例如,%>s 可以用于記錄請求的最終狀態(tài),而 %<u 則記錄一個已經(jīng)被內(nèi)部重定向到非認(rèn)證資源的請求的原始認(rèn)證用戶。

一些說明

出于安全考慮,從2.0.46版本開始,%r, %i, %o 中的特殊字符,除了雙引號(")和反斜線(\)分別用 \"\\ 進(jìn)行轉(zhuǎn)義、空白字符用C風(fēng)格(\n, \t 等)進(jìn)行轉(zhuǎn)義以外,非打印字符和其它特殊字符使用 \xhh 格式進(jìn)行轉(zhuǎn)義(hh是該字符的16進(jìn)制編碼)。在2.0.46以前的版本中,這些內(nèi)容會被完整的按原樣記錄。這種做法將導(dǎo)致客戶端可以在日志中插入控制字符,所以你在處理這些日志文件的時候要特別小心。

在2.0版本中(不同于1.3),%b%B 格式字符串并不表示發(fā)送到客戶端的字節(jié)數(shù),而只是簡單的表示HTTP應(yīng)答字節(jié)數(shù)(在連接中斷或使用SSL時與前者有所不同)。mod_logio提供的 %O 格式字符串將會記錄發(fā)送的實際字節(jié)數(shù)。

示例

一些常見的格式串:

通用日志格式(CLF)
"%h %l %u %t \"%r\" %>s %b"
帶虛擬主機(jī)的通用日志格式
"%v %h %l %u %t \"%r\" %>s %b"
NCSA擴(kuò)展/組合日志格式
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
Referer日志格式
"%{Referer}i -> %U"
Agent(Browser)日志格式
"%{User-agent}i"
top

安全考慮

如果放置日志文件的目錄對除啟動Apache服務(wù)以外的其他用戶可寫,可能會對系統(tǒng)的安全性造成威脅,具體的討論請參見安全方面的提示。

top

BufferedLogs 指令

說明在將日志寫入磁盤前先在內(nèi)存中進(jìn)行緩沖
語法BufferedLogs On|Off
默認(rèn)值BufferedLogs Off
作用域server config
狀態(tài)基本(B)
模塊mod_log_config
兼容性僅在 Apache 2.0.41 及以后的版本中可用

BufferedLogs指令使得mod_log_config先在內(nèi)存中緩沖一些日志內(nèi)容,然后一次性寫入磁盤,而不是立即寫入。在一些系統(tǒng)上這樣做可以提高磁盤性能。這個設(shè)置僅能夠針對全局進(jìn)行設(shè)置,不能單獨針對虛擬主機(jī)進(jìn)行設(shè)置。

這是一個試驗性的指令,請在使用中多加小心。
top

CookieLog 指令

說明設(shè)定針對cookies的日志文件名
語法CookieLog filename
作用域server config, virtual host
狀態(tài)基本(B)
模塊mod_log_config
兼容性反對使用該指令

CookieLog指令使用cookies作為日志文件名。文件是相對于ServerRoot目錄的。包含本指令僅僅是為了保持與mod_cookies模塊的兼容,并且反對使用。

top

CustomLog 指令

說明設(shè)定日志的文件名和格式
語法CustomLog file|pipe format|nickname [env=[!]environment-variable]
作用域server config, virtual host
狀態(tài)基本(B)
模塊mod_log_config

CustomLog指令用來對服務(wù)器的請求進(jìn)行日志記錄?梢灾付ㄈ罩镜母袷,也可以使用環(huán)境變量根據(jù)請求的特征來自由地組織日志。

第一個參數(shù)指定了日志記錄的位置,可以使用以下兩種方式來設(shè)定:

file
相對于ServerRoot的日志文件名。
pipe
管道符"|"后面緊跟著一個把日志輸出當(dāng)作標(biāo)準(zhǔn)輸入的處理程序路徑。

安全

如果這里用到了程序,那么這個程序是以啟動httpd的用戶來執(zhí)行的。因此如果啟動httpd的用戶是root ,那這個程序也將以root身份來運行;你需要確認(rèn)這個程序是安全的。

注意

當(dāng)在非UNIX平臺上輸入文件路徑的時候,要特別注意即使平臺本身是使用反斜杠(\)來分隔路徑的,在這里也只能使用正斜杠(/)。通常在配置文件里只用正斜杠(/)來分隔路徑總是不會錯的。

第二個參數(shù)指定了寫入日志文件的內(nèi)容。它既可以是由前面的LogFormat指令定義的nickname ,也可以是直接按日志格式一節(jié)所描述的規(guī)則定義的format字符串。

例如:以下兩組指令的結(jié)果是完全一樣的:

# 使用nickname
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common

# 明確使用格式格式字符串
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"

第三個參數(shù)是可選的,它根據(jù)服務(wù)器上特定的環(huán)境變量是否被設(shè)置來決定是否對某一特定的請求進(jìn)行日志記錄。如果這個特定的環(huán)境變量被設(shè)置(或者在"env=!name"的情況下未被設(shè)置),那么這個請求將被記錄。

可以使用mod_setenvif和/或mod_rewrite模塊來為每個請求設(shè)置環(huán)境變量。例如:如果你想在服務(wù)器上將所有對GIF圖片的請求記錄在不同于主日志文件的另一個日志文件中,你可以使用下面的指令:

SetEnvIf Request_URI \.gif$ gif-image
CustomLog gif-requests.log common env=gif-image
CustomLog nongif-requests.log common env=!gif-image

或者為了復(fù)制舊有的RefererIgnore指令的行為,你可以使用下面的指令:

SetEnvIf Referer example\.com localreferer
CustomLog referer.log referer env=!localreferer

top

LogFormat 指令

說明定義訪問日志的記錄格式
語法LogFormat format|nickname [nickname]
默認(rèn)值LogFormat "%h %l %u %t \"%r\" %>s %b"
作用域server config, virtual host
狀態(tài)基本(B)
模塊mod_log_config

本指令定義訪問日志的記錄格式。

LogFormat指令可以使用兩種定義格式中的一種。在第一種格式中,指令只帶一個參數(shù),以定義后續(xù)的TransferLog指令定義的日志格式。這個唯一的參數(shù)可以按上述自定義日志格式小節(jié)所描述的format來定義。另外它也可以通過下述的方法使用nickname來引用某個之前的LogFormat定義的日志格式。

第二種定義LogFormat指令的格式中,將一個直接的format和一個nickname聯(lián)系起來。這樣在后續(xù)的LogFormatCustomLog指令中,就不用一再重復(fù)整個冗長的格式串。定義別名的LogFormat指令僅僅用來定義一個nickname ,而不做其它任何事情:也就是說,它只是定義了這個別名,它既沒有實際應(yīng)用這個別名,也不是把它設(shè)為默認(rèn)的格式。因此,它不會影響后續(xù)的TransferLog指令。另外,LogFormat不能用一個別名來定義另一個別名。注意,別名不能包含百分號(%)。

示例

LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common

top

TransferLog 指令

說明指定日志文件的位置
語法TransferLog file|pipe
作用域server config, virtual host
狀態(tài)基本(B)
模塊mod_log_config

本指令除不允許直接定義日志格式或根據(jù)條件進(jìn)行日志記錄外,與CustomLog指令有完全相同的參數(shù)和功能。實際應(yīng)用中,日志的格式是由最近的非別名定義的LogFormat指令指定。如果沒有定義任何日志格式,則使用通用日志格式。

示例

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
TransferLog logs/access_log