複製鏈接
請複製以下鏈接發送給好友

錯誤日誌

鎖定
錯誤日誌是軟件用來記錄運行時出錯信息的文本文件。編程人員和維護人員等可以利用錯誤日誌對系統進行調試和維護。
中文名
錯誤日誌
外文名
Error Log
領    域
計算機

錯誤日誌定義和內容

以下以阿帕奇為例説明錯誤日誌的定義和內容。
1、位置和內容
錯誤日誌無論在格式上還是在內容上都和訪問日誌不同。然而,錯誤日誌和訪問日誌一樣也提供豐富的信息,我們可以利用這些信息分析服務器的運行情況、哪裏出現了問題。
錯誤日誌的文件名字是error_log,但如果是Win平台,則錯誤日誌的文件名字是error.log。錯誤日誌的位置可以通過ErrorLog指令設置:
ErrorLog logs/error.log
除非文件位置用“/”開頭,否則這個文件位置是相對於ServerRoot目錄的相對路徑。如果阿帕奇採用默認安裝方式安裝,那麼錯誤日誌的位置應該在/usr/local/apache/logs下。但是,如果阿帕奇用某種包管理器安裝,錯誤日誌很可能在其他位置。
正如其名字所示,錯誤日誌記錄了服務器運行期間遇到的各種錯誤,以及一些普通的診斷信息,比如服務器何時啓動、何時關閉等。
我們可以設置日誌文件記錄信息級別的高低,控制日誌文件記錄信息的數量和類型。這是通過LogLevel指令設置的,該指令默認設置的級別是error,即記錄稱得上錯誤的事件。
大多數情況下,我們在日誌文件中見到的內容分屬兩類:文檔錯誤和CGI錯誤。但是,錯誤日誌中偶爾也會出現配置錯誤,另外還有前面提到的服務器啓動和關閉信息。 [1] 
二、文檔錯誤
文檔錯誤和服務器應答中的400系列代碼相對應,最常見的就是404錯誤——Document Not Found(文檔沒有找到)。除了404錯誤以外,用户身份驗證錯誤也是一種常見的錯誤。 [1] 
三、CGI錯誤
錯誤日誌最主要的用途或許是診斷行為異常的CGI程序。為了進一步分析和處理方便,CGI程序輸出到STDERR(Standard Error,標準錯誤設備)的所有內容都將直接進入錯誤日誌。這意味着,任何編寫良好的CGI程序,如果出現了問題,錯誤日誌就會告訴我們有關問題的詳細信息。 [1] 
四、查看日誌文件
下面看看如何方便地查看服務器日誌文件。用telnet連接到服務器,然後輸入下面的命令:
tail -f /usr/local/apache/logs/error_log
該命令將顯示出日誌文件的最後幾行內容,如果有新的內容加入到日誌文件,它還會立即顯示出新加入的內容。
Windows用户也同樣可以使用這種方法,比如可以使用各種為Windows提供的Unix工具軟件包。
還有一種替代方法是使用下面的Perl代碼,它利用了一個稱為File::Tail的模塊:
use File::Tail; 
$file=File::Tail->new(\"/some/log/file\"); 
while (defined($line=$file->read)) { 
print \"$line\"; 
} 
無論具體採用的是哪一種方法,同時打開多個終端窗口都是一種好習慣:比如在一個窗口中顯示錯誤日誌,在另一個窗口中顯示訪問日誌。這樣,我們就能夠隨時獲知網站上發生的事情並立即予以解決。

錯誤日誌本地錯誤日誌

錯誤日誌系統日誌

系統日誌包含了由Windows系統組件記錄的事件。例如,在啓動期間裝入驅動程序或其他系統組件失敗被記錄到系統日誌。要查看系統日誌:
  1. 打開命令提示符。
  2. 在提示符下輸入eventvwr。這打開了Windows事件查看器。

錯誤日誌應用程序日誌

應用程序日誌包含了由應用程序或程序記錄的事件。例如,數據庫程序可能在應用程序日誌中記錄一個文件錯誤。要查看應用程序日誌:
  1. 打開命令提示符。
  2. 在提示符下輸入eventvwr。這打開了Windows事件查看器。

錯誤日誌解釋日誌信息

在兩種日誌中,每個事件按照日期和時間順序(首先是最近的)分行顯示,帶有下列信息:
  • 類型:事件類型,可以是信息、警告或錯誤。
  • 日期和時間:事件被寫入日誌的日期和時間。
  • 源:引起該事件的操作。
  • 類別:事件的類別。缺省類別是無。
  • 事件:事件編號。
  • 用户:事件發生時的用户名。
  • 計算機:本地機器的名稱。
查看單個日誌條目:
1 在系統或應用程序日誌中,查找日誌條目。
2 右鍵單擊條目。
在WindowsWindowsServer 2008 中,單擊事件以打開“事件屬性”窗口。
該窗口顯示事件的描述。選擇“詳細信息”選項卡可以查看將記錄寫入日誌時解析的字節或字。
3 使用向上和向下箭頭鍵上下移動以查看日誌事件。
4 要關閉窗口,請單擊確定以返回到系統日誌或應用程序日誌 [2] 

錯誤日誌注意問題

以下以PHP為例説明如何避免錯誤日誌被利用而導致系統遭到攻擊。
對於PHP開發者來説,一旦某個產品投入使用,應該立即將display_errors選項關閉,以免因為這些錯誤所透露的路徑、數據庫連接、數據表等信息而遭到黑客攻擊。但是,任何一個產品在投入使用後,都難免會有錯誤出現,那麼如何記錄一些對開發者有用的錯誤報告呢?我們可以在單獨的文本文件中將錯誤報告作為日誌記錄。錯誤日誌的記錄,可以幫助開發人員或者管理人員查看系統是否存在問題。
如果需要將程序中的錯誤報告寫入錯誤日誌中,只要在PHP的配置文件中,將配置指令log_errors開啓即可。錯誤報告默認就會記錄到Web服務器的日誌文件裏。
參考資料