摘要:指令的功能是定義日志格式并為它指定一個(gè)名字。服務(wù)器服務(wù)于該請(qǐng)求的標(biāo)準(zhǔn)端口。請(qǐng)求完成時(shí)的連接狀態(tài)連接在應(yīng)答完成前中斷。發(fā)送的字節(jié)數(shù),包括請(qǐng)求頭的數(shù)據(jù),并且不能為零。
簡述
Apache 訪問日志在實(shí)際工作中非常有用,比較典型的例子是進(jìn)行網(wǎng)站流量統(tǒng)計(jì),查看用戶訪問時(shí)間、地理位置分布、頁面點(diǎn)擊率等。Apache 的訪問日志具有如下4個(gè)方面的作用:
記錄訪問服務(wù)器的遠(yuǎn)程主機(jī)IP 地址,從而可以得知瀏覽者來自何處;
記錄瀏覽者訪問的Web資源,可以了解網(wǎng)站中的哪些部分最受歡迎;
記錄瀏覽者使用的瀏覽器,可以根據(jù)大多數(shù)瀏覽者使用的瀏覽器對(duì)站點(diǎn)進(jìn)行優(yōu)化;
記錄瀏覽者的訪問時(shí)間;
配置定制日志文件的格式涉及到兩個(gè)指令,即LogFormat指令和CustomLog指令,默認(rèn)httpd.conf文件提供了關(guān)于這兩個(gè)指令的幾個(gè)示例。
LogFormat指令定義格式并為格式指定一個(gè)名字,以后我們就可以直接引用這個(gè)名字。CustomLog指令設(shè)置日志文件,并指明日志文件所用的格式(通常通過格式的名字)。
LogFormat指令的功能是定義日志格式并為它指定一個(gè)名字。例如,在默認(rèn)的httpd.conf文件中,我們可以找到下面這行代碼:
LogFormat "%h %l %u %t "%r" %>s %b" common
該指令創(chuàng)建了一種名為“common”的日志格式,日志的格式在雙引號(hào)包圍的內(nèi)容中指定。格式字符串中的每一個(gè)變量代表著一項(xiàng)特定的信息,這些信息按照格式串規(guī)定的次序?qū)懭氲饺罩疚募?br>Apache文檔已經(jīng)給出了所有可用于格式串的變量及其含義,下面是其譯文:
%% 百分號(hào)(Apache2.0.44或更高的版本) %a 遠(yuǎn)端IP地址 %A 本機(jī)IP地址 %B 除HTTP頭以外傳送的字節(jié)數(shù) %b 以CLF格式顯示的除HTTP頭以外傳送的字節(jié)數(shù),也就是當(dāng)沒有字節(jié)傳送時(shí)顯示’-‘而不是0。 %{Foobar}C 在請(qǐng)求中傳送給服務(wù)端的cookieFoobar的內(nèi)容。 %D 服務(wù)器處理本請(qǐng)求所用時(shí)間,以微為單位。 %{FOOBAR}e 環(huán)境變量FOOBAR的值 %f 文件名 %h 遠(yuǎn)端主機(jī) %H 請(qǐng)求使用的協(xié)議 %{Foobar}i 發(fā)送到服務(wù)器的請(qǐng)求頭Foobar:的內(nèi)容。 %l 遠(yuǎn)端登錄名(由identd而來,如果支持的話),除非IdentityCheck設(shè)為”O(jiān)n“,否則將得到一個(gè)”-”。 %m 請(qǐng)求的方法 %{Foobar}n 來自另一個(gè)模塊的注解Foobar的內(nèi)容。 %{Foobar}o 應(yīng)答頭Foobar:的內(nèi)容。 %p 服務(wù)器服務(wù)于該請(qǐng)求的標(biāo)準(zhǔn)端口。 %P 為本請(qǐng)求提供服務(wù)的子進(jìn)程的PID。 %{format}P 服務(wù)于該請(qǐng)求的PID或TID(線程ID),format的取值范圍為:pid和tid(2.0.46及以后版本)以及hextid(需要APR1.2.0及以上版本) %q 查詢字符串(若存在則由一個(gè)”?“引導(dǎo),否則返回空串) %r 請(qǐng)求的第一行 %s 狀態(tài)。對(duì)于內(nèi)部重定向的請(qǐng)求,這個(gè)狀態(tài)指的是原始請(qǐng)求的狀態(tài),—%>s則指的是最后請(qǐng)求的狀態(tài)。 %t 時(shí)間,用普通日志時(shí)間格式(標(biāo)準(zhǔn)英語格式) %{format}t 時(shí)間,用strftime(3)指定的格式表示的時(shí)間。(默認(rèn)情況下按本地化格式) %T 處理完請(qǐng)求所花時(shí)間,以秒為單位。 %u 遠(yuǎn)程用戶名(根據(jù)驗(yàn)證信息而來;如果返回status(%s)為401,可能是假的) %U 請(qǐng)求的URL路徑,不包含查詢字符串。 %v 對(duì)該請(qǐng)求提供服務(wù)的標(biāo)準(zhǔn)ServerName。 %V 根據(jù)UseCanonicalName指令設(shè)定的服務(wù)器名稱。 %X 請(qǐng)求完成時(shí)的連接狀態(tài): X= 連接在應(yīng)答完成前中斷。 += 應(yīng)答傳送完后繼續(xù)保持連接。 -= 應(yīng)答傳送完后關(guān)閉連接。 (在1.3以后的版本中,這個(gè)指令是%c,但這樣就和過去的SSL語法:%{var}c沖突了) %I 接收的字節(jié)數(shù),包括請(qǐng)求頭的數(shù)據(jù),并且不能為零。要使用這個(gè)指令你必須啟用mod_logio模塊。 %O 發(fā)送的字節(jié)數(shù),包括請(qǐng)求頭的數(shù)據(jù),并且不能為零。要使用這個(gè)指令你必須啟用mod_logio模塊。常見的日志格式舉例
通用日志格式(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”
apache配置實(shí)例格式:
LogFormat "%h %l %u %t %T "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined LogFormat "%h %l %u %t "%r" %>s %b" common按時(shí)間分配記錄# You need to enable mod_logio.c to use %I and %O LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
對(duì)于大訪問量的網(wǎng)站,日志不可能只記錄在一個(gè)文件里面,1萬日志大概就有50M,還有一個(gè)可能就是你要跟蹤用戶的行為,可能需要一些額外的信息,怎么把這些東西記錄到apache日志里面。apache提供了很出色的日志配置方式,具體的配置可以參考:http://httpd.apache.org/docs/... 我這里只是簡單的舉一些例子。
實(shí)現(xiàn)按照小時(shí)記錄日志apache 自帶有一個(gè)rotatelogs 可以實(shí)現(xiàn)這個(gè)功能,查看一下他的help就知道使用的方法了。
Usage: rotatelogs [-l]{ | } [offset minutes from UTC]
先看下面的例子:
ServerAdmin [email protected] DocumentRoot /home/web/www ServerName myhost.com Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all CustomLog "|bin/rotatelogs logs/myhost_access_log_%Y_%m_%d_%H.log 3600 480" common
logs/pma_access_log_%Y_%m_%d_%H.log 是文件名字,可以用占位符。
3600 表示的是每個(gè)小時(shí)記錄一次,這個(gè)單位是s
480 表示和UTC時(shí)間差的分鐘數(shù)目,我們是東八區(qū)要比他們?cè)?80分鐘。
我要記錄一個(gè)用戶的客戶端的信息,并且每次用戶訪問,我都自動(dòng)在瀏覽器里面寫一個(gè)cookie,及時(shí)發(fā)現(xiàn)惡意攻擊或者用于廣告系統(tǒng)中防止作弊。
首先啟用apache 自帶的user track 把 LoadModule usertrack_module modules/mod_usertrack.so前面的#去掉。
linux用戶的話,沒有這個(gè)模塊,那么就重新編譯一下。
ServerAdmin [email protected] DocumentRoot D:/web/htdocs ServerName localhost.com CookieTracking on CookieDomain .localhost.com CookieExpires "1 days" CookieStyle Cookie Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i" "%{Cookie}i"" mylogconfig CustomLog "|bin/rotatelogs logs/pma_access_log_%Y_%m_%d_%H.log 3600 480" mylogconfig
CookieTracking on
CookieDomain .localhost.com
CookieExpires "1 days"
CookieStyle Cookie
這四句是設(shè)置cookie的屬性的。
這一句是設(shè)置日志的屬性:
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i" "%{Cookie}i"" mylogconfig
日志的名字叫做mylogconfig。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/36036.html
摘要:在全面兼容Apache Kafka生態(tài)的基礎(chǔ)上,消息隊(duì)列Kafka徹底解決ApacheKafka穩(wěn)定性不足的長期痛點(diǎn),并且支持消息無縫遷移到云上。 近日,阿里云宣布正式推出消息隊(duì)列Kafka,全面融合開源生態(tài)。在全面兼容Apache Kafka生態(tài)的基礎(chǔ)上,消息隊(duì)列Kafka還具備了超易用,超高可用可靠性,擴(kuò)縮容不操心,全方位安全診斷,數(shù)據(jù)安全有保障的特點(diǎn)。可用行達(dá)99.9%,數(shù)據(jù)可靠行99...
摘要:擴(kuò)展模塊目錄是模塊化的訪問的時(shí)候就調(diào)用模塊來執(zhí)行訪問的時(shí)候就調(diào)用模塊來執(zhí)行默認(rèn)數(shù)據(jù)目錄日志目錄 安裝 yum -y install httpd httpd-devel # 在Ubuntu里面叫做Apache2,輸入localhost能打開就算成功了 Apache使用 開啟 /usr/sbin/apachectl start /etc/init.d/httpd start servi...
閱讀 861·2021-11-22 12:04
閱讀 2061·2021-11-02 14:46
閱讀 589·2021-08-30 09:44
閱讀 2070·2019-08-30 15:54
閱讀 684·2019-08-29 13:48
閱讀 1565·2019-08-29 12:56
閱讀 3387·2019-08-28 17:51
閱讀 3265·2019-08-26 13:44