日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache日志配置

發布時間:2023/12/10 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache日志配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

  • 有時候我們需要定制Apache默認日志的格式和內容,比如增加或減少日志所記錄的信息、改變默認日志文件的格式等。本文介紹可以用日志?記錄的所有信息,以及如何設置Apache使其記錄這些信息。?
  • ?
  •   ?
  • 一、定義日志格式(4月3日)?
  • ?
  • 很久以前,日志文件只有一種格式,這就是“公共格式”,許多人已經習慣于使用這種格式。隨后出現了定制日志格式,而且看起來定制日志格式更很受歡迎,即使?公共日志格式本身也重新用定制日志格式定義。本文介紹的就是如何隨心所欲地定制日志文件的格式、如何讓日志文件記錄自己想要的信息。?
  • ?
  • 定制日志文件的格式涉及到兩個指令,即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。?
  • %...{FOOBAR}e:?環境變量FOOBAR的內容?
  • %...f:?文件名字?
  • %...h:?遠程主機?
  • %...H?請求的協議?
  • %...{Foobar}i:?Foobar的內容,發送給服務器的請求的標頭行。?
  • %...l:?遠程登錄名字(來自identd,如提供的話)?
  • %...m?請求的方法?
  • %...{Foobar}n:?來自另外一個模塊的注解“Foobar”的內容?
  • %...{Foobar}o:?Foobar的內容,應答的標頭行?
  • %...p:?服務器響應請求時使用的端口?
  • %...P:?響應請求的子進程ID。?
  • %...q?查詢字符串(如果存在查詢字符串,則包含“?”后面的部分;否則,它是一個空字符串。)?
  • %...r:?請求的第一行?
  • %...s:?狀態。對于進行內部重定向的請求,這是指*原來*請求?的狀態。如果用%...>s,則是指后來的請求。?
  • %...t:?以公共日志時間格式表示的時間(或稱為標準英文格式)?
  • %...{format}t:?以指定格式format表示的時間?
  • %...T:?為響應請求而耗費的時間,以秒計?
  • %...u:?遠程用戶(來自auth;如果返回狀態(%s)是401則可能是偽造的)?
  • %...U:?用戶所請求的URL路徑?
  • %...v:?響應請求的服務器的ServerName?
  • %...V:?依照UseCanonicalName設置得到的服務器名字?
  • ?
  • 在所有上面列出的變量中,“...”表示一個可選的條件。如果沒有指定條件,則變量的值將以“-”取代。分析前面來自默認httpd.conf文件的?LogFormat指令示例,可以看出它創建了一種名為“common”的日志格式,其中包括:遠程主機,遠程登錄名字,遠程用戶,請求時間,請求的第一?行代碼,請求狀態,以及發送的字節數。?
  • ?
  • 有時候我們只想在日志中記錄某些特定的、已定義的信息,這時就要用到“...”。如果在“%”和變量之間放入了一個或者多個HTTP狀態代碼,則只有當請?求返回的狀態代碼屬于指定的狀態代碼之一時,變量所代表的內容才會被記錄。例如,如果我們想要記錄的是網站的所有無效鏈接,那么可以使用:?
  • ?
  • LogFormat?%404{Referer}i?BrokenLinks?
  • ?
  • 反之,如果我們想要記錄那些狀態代碼不等于指定值的請求,只需加入一個“!”符號即可:?
  • ?
  • Apache日志:訪問日志(一)?
  • 想要知道什么人在什么時候瀏覽了網站的哪些內容嗎?查看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錯誤日志,定制日志的格式和內容,如何將日志內容寫入指定的程序而不是文件,如何從日志?文件獲得一些非常有用的統計信息,等等。?
  • ?
  • ?
  • Apache日志:訪問日志(二)?
  • ?
  • 3.?進程統計?
  • ?
  • UNIX可以跟蹤每個用戶運行的每條命令,如果想知道昨晚弄亂了哪些重要的文件,進程統計子系統可以告訴?你。它對還跟蹤一個侵入者有幫助。與連接時間日志不同,進程統計子系統缺省不激活,它必須啟動。在Linux系統中啟動進程統計使用accton命令,必?須用root身份來運行。Accton命令的形式accton?file,file必須先存在。先使用touch命令來創建pacct文件:touch?/var/log/pacct,然后運行accton:?accton?/var/log/pacct。一旦accton被激活,就可以使用lastcomm命令監測系統中任何時候執行的命令。若要關閉統計,可以使用不帶任何?參數的accton命令。?
  • ?
  • lastcomm命令報告以前執行的文件。不帶參數時,lastcomm命令顯示當前統計文件生命周期?內紀錄的所有命令的有關信息。包括命令名、用戶、tty、命令花費的CPU時間和一個時間戳。如果系統有許多用戶,輸入則可能很長。下面的例子:?
  • ?
  • crond?F?root????0.00?secs?Sun?Aug?20?00:16?
  • promisc_check.s?S?root????0.04?secs?Sun?Aug?20?00:16?
  • promisc_check?root????0.01?secs?Sun?Aug?20?00:16?
  • grep?root????0.02?secs?Sun?Aug?20?00:16?
  • tail?root????0.01?secs?Sun?Aug?20?00:16?
  • sh?root????0.01?secs?Sun?Aug?20?00:15?
  • ping?S?root????0.01?secs?Sun?Aug?20?00:15?
  • ping6.pl?F?root????0.01?secs?Sun?Aug?20?00:15?
  • sh?root????0.01?secs?Sun?Aug?20?00:15?
  • ping?S?root????0.02?secs?Sun?Aug?20?00:15?
  • ping6.pl?F?root????0.02?secs?Sun?Aug?20?00:15?
  • sh?root????0.02?secs?Sun?Aug?20?00:15?
  • ping?S?root????0.00?secs?Sun?Aug?20?00:15?
  • ping6.pl?F?root????0.01?secs?Sun?Aug?20?00:15?
  • sh?root????0.01?secs?Sun?Aug?20?00:15?
  • ping?S?root????0.01?secs?Sun?Aug?20?00:15?
  • sh?root????0.02?secs?Sun?Aug?20?00:15?
  • ping?S?root????1.34?secs?Sun?Aug?20?00:15?
  • locate?root?ttyp0?1.34?secs?Sun?Aug?20?00:15?
  • accton?S?root?ttyp0?0.00?secs?Sun?Aug?20?00:15?
  • ?
  • 進程統計的一個問題是pacct文件可能增長的十?分迅速。這時需要交互式的或經過cron機制運行sa命令來保持日志數據在系統控制內。sa命令報告、清理并維護進程統計文件。它能把/var/log?/pacct中的信息壓縮到摘要文件/var/log/savacct和/var/log/usracct中。這些摘要包含按命令名和用戶名分類的系統統?計數據。sa缺省情況下先讀它們,然后讀pacct文件,使報告能包含所有的可用信息。sa的輸出有下面一些標記項:?
  • ?
  • avio--每次執行的平均I/O操作次數?
  • cp--用戶和系統時間總和,以分鐘計?
  • cpu--和cp一樣?
  • k--內核使?用的平均CPU時間,以1k為單位?
  • k*sec--CPU存儲完整性,以1k-core秒?
  • re--實時時間,以分鐘計?
  • s--系統時間,以分鐘計?
  • tio--I/O操作的總數?
  • u--用戶時間,以分鐘計?
  • ?
  • 例如:?
  • ?
  • 842?173.26re?4.30cp?0avio?358k?
  • 2?10.98re?4.06cp?0avio?299k?find?
  • 9?24.80re?0.05cp?0avio?291k?***other?
  • 105?30.44re?0.03cp?0avio?302k?ping?
  • 104?30.55re?0.03cp?0avio?394k?sh?
  • 162?0.11re?0.03cp?0avio?413k?security.sh*?
  • 154?0.03re?0.02cp?0avio?273k?ls?
  • 56?31.61re?0.02cp?0avio?823k?ping6.pl*?
  • 2?3.23re?0.02cp?0avio?822k?ping6.pl?
  • 35?0.02re?0.01cp?0avio?257k?md5sum?
  • 97?0.02re?0.01cp?0avio?263k?initlog?
  • 12?0.19re?0.01cp?0avio?399k?promisc_check.s?
  • 15?0.09re?0.00cp?0avio?288k?grep?
  • 11?0.08re?0.00cp?0avio?332k?awk?
  • ?
  • 用?戶還可以根據用戶而不是命令來提供一個摘要報告。例如sa?-m顯示如下:?
  • ?
  • 885?173.28re?4.31cp?0avk?
  • root?879?173.23re?4.31cp?0avk?
  • alias?3?0.05re?0.00cp?0avk?
  • qmailp?3?0.01re?0.00cp?0avk?
  • ?
  • 4.?Syslog設備?
  • ?
  • Syslog已被許多?日志函數采納,它用在許多保護措施中--任何程序都可以通過syslog?紀錄事件。Syslog可以紀錄系統事件,可以寫到一個文件或設備中,或給用戶發送一個信息。它能紀錄本地事件或通過網絡紀錄另一個主機上的事件。?
  • ?
  • Syslog設備依據兩個重要的文件:/etc/syslogd(守護進程)和/etc/syslog.conf配置文件,習慣上,多數?syslog信息被寫到/var/adm或/var/log目錄下的信息文件中(messages.*)。一個典型的syslog紀錄包括生成程序的名字?和一個文本信息。它還包括一個設備和一個優先級范圍(但不在日之中出現)。?
  • ?
  • 每個syslog消息被賦予下面的主要設備之一:?
  • ?
  • LOG_AUTH--認證系統:login、su、getty等?
  • LOG_AUTHPRIV--同LOG_AUTH,但只登錄到?所選擇的單個用戶可讀的文件中?
  • LOG_CRON--cron守護進程?
  • LOG_DAEMON--其他系統守護進程,如routed?
  • LOG_FTP--文件傳輸協議:ftpd、tftpd?
  • LOG_KERN--內核產生的消息?
  • LOG_LPR--系統打印機緩沖?池:lpr、lpd?
  • LOG_MAIL--電子郵件系統?
  • LOG_NEWS--網絡新聞系統?
  • LOG_SYSLOG--由?syslogd(8)產生的內部消息?
  • LOG_USER--隨機用戶進程產生的消息?
  • LOG_UUCP--UUCP子系統?
  • LOG_LOCAL0~LOG_LOCAL7--為本地使用保留?
  • ?
  • Syslog為每個事件賦予幾個不同的優先級:?
  • ?
  • LOG_EMERG--緊急情況?
  • LOG_ALERT--應該被立即改正的問題,如系統數據庫破壞?
  • LOG_CRIT--重要情?況,如硬盤錯誤?
  • LOG_ERR--錯誤?
  • LOG_WARNING--警告信息?
  • LOG_NOTICE--不是錯誤情況,?但是可能需要處理?
  • LOG_INFO--情報信息?
  • LOG_DEBUG--包含情報的信息,通常旨在調試一個程序時使用?
  • ?
  • syslog.conf文件指明syslogd程序紀錄日志的行為,該程序在啟動時查詢配置文件。該文件由不同程序或消息分類的單個條目組成,每個占一?行。對每類消息提供一個選擇域和一個動作域。這些域由tab隔開:選擇域指明消息的類型和優先級;動作域指明syslogd接收到一個與選擇標準相匹配的?消息時所執行的動作。每個選項是由設備和優先級組成。當指明一個優先級時,syslogd將紀錄一個擁有相同或更高優先級的消息。所以如果指?明"crit",那所有標為crit、alert和emerg的消息將被紀錄。每行的行動域指明當選擇域選擇了一個給定消息后應該把他發送到哪兒。例如,?如果想把所有郵件消息紀錄到一個文件中,如下:?
  • ?
  • #Log?all?the?mail?messages?in?one?place?
  • mail.*?/var/log/maillog?
  • ?
  • 其他設備也有自己的日志。UUCP和news設備能產生?許多外部消息。它把這些消息存到自己的日志(/var/log/spooler)中并把級別限為"err"或更高。例如:?
  • ?
  • #?Save?mail?and?news?errors?of?level?err?and?higher?in?aspecial?file.?
  • uucp,news.crit?/var/log/spooler?
  • ?
  • 當一個緊急消息到來時,可能想讓所有的用戶都得到。也可能想?讓自己的日志接收并保存。?
  • ?
  • #Everybody?gets?emergency?messages,?plus?log?them?on?anther?machine?
  • *.emerg?*?
  • *.emerg?@linuxaid.com.cn?
  • ?
  • alert消息應該寫到root和tiger的個人賬號中:?
  • ?
  • #Root?and?Tiger?get?alert?and?higher?messages?
  • *.alert?root,tiger?
  • ?
  • 有時syslogd將產生大量的消?息。例如內核("kern"設備)可能很冗長。用戶可能想把內核消息紀錄到/dev/console中。下面的例子表明內核日志紀錄被注釋掉了:?
  • ?
  • #Log?all?kernel?messages?to?the?console?
  • #Logging?much?else?clutters?up?the?screen?
  • #kern.*?/dev/console?
  • ?
  • 用戶可以在一行中指明所有?的設備。下面的例子把info或更高級別的消息送到/var/log/messages,除了mail以外。級別"none"禁止一個設備:?
  • ?
  • #Log?anything(except?mail)of?level?info?or?higher?
  • #Don't?log?private?authentication?messages!?
  • *.info:mail.none;authpriv.none?/var/log/messages?
  • ?
  • 在有些情況下,可以把日志送到打印機,這樣網絡***者怎么修改日志都沒有用了。通常要廣泛紀?錄日志。Syslog設備是一個***者的顯著目標。一個為其他主機維護日志的系統對于防范服務器***特別脆弱,因此要特別注意。?
  • ?
  • 有個小命令logger為syslog(3)系統日志文件提供一個shell命令接口,使用戶能創建日志文件中的條目。用法:logger?例如:logger?This?is?a?test!?
  • ?
  • 它將產生一個如下的syslog紀錄:Aug?19?22:22:34?tiger:?This?is?a?test!?
  • ?
  • 注意不要完全相信日志,因為***者很容易修改它的。?
  • ?
  • 5.?程序日志?
  • ?
  • 許多程序通過維護日志來反映系統的安全狀態。su命令允許用戶獲得另一個用戶的權限,所以它的安全很重要,它的文件為?sulog。同樣的還有sudolog。另外,想Apache有兩個日志:access_log和error_log。?
  • ?

    轉載于:https://blog.51cto.com/lya041/669440

    總結

    以上是生活随笔為你收集整理的Apache日志配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。