1. 程式人生 > >apache error_log日誌詳解

apache error_log日誌詳解

注意

當在非Unix平臺上輸入檔案路徑的時候,路徑分隔符必須統一使用正斜線(/),即使那個平臺本身使用反斜線(\)。

LogLevel:

說明 控制錯誤日誌的詳細程度
語法 LogLevellevel
預設值 LogLevel warn
作用域 server config, virtual host

可以選擇下列level,依照重要性降序排列:

Level 描述 例子
emerg 緊急(系統無法使用) "Child cannot open lock file. Exiting"
alert 必須立即採取措施 "getpwuid: couldn't determine user name from uid"
crit 致命情況 "socket: Failed to get a socket, exiting child"
error 錯誤情況 "Premature end of script. headers"
warn 警告情況 "child process 1234 did not exit, sending another SIGHUP"
notice 一般重要情況 "httpd: caught SIGBUS, attempting to dump core in ..."
info 普通訊息 "Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..."
debug 除錯資訊 "Opening config file ..."

當指定了某個級別時,所有級別高於它的資訊也會被同時記錄。比如,指定 LogLevel info ,則所有notice和warn級別的資訊也會被記錄。

建議至少使用crit級別。

示例如下:LogLevel notice


注意:當錯誤日誌是一個單獨分開的正式檔案的時候,notice級別的訊息總是會被記錄下來,而不能被遮蔽。但是,當使用syslog來記錄時就沒有這個問題。


下面將對錯誤日記進行詳細說明:

錯誤日誌是最重要的日誌檔案,其檔名和位置取決於指令。Apache httpd將在這個檔案中存放診斷資訊和處理請求中出現的錯誤,由於這裡經常包含了出錯細節以及如何解決,如果伺服器啟動或執行中有問題,首先就應該檢視這個錯誤日誌。

錯誤日誌通常被寫入一個檔案(unix系統上一般是error_log,Windows和OS/2上一般是error.log)。在unix系統中,錯誤日誌還可能被重定向到syslog通過管道操作傳遞給一個程式

錯誤日誌的格式相對靈活,並可以附加文字描述。某些資訊會出現在絕大多數記錄中,一個典型的例子是:

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

其中,第一項是錯誤發生的日期和時間;第二項是錯誤的嚴重性,指令使只有高於指定嚴重性級別的錯誤才會被記錄;第三項是導致錯誤的IP地址;此後是資訊本身,在此例中,伺服器拒絕了這個客戶的訪問。伺服器在記錄被訪問檔案時,用的是檔案系統路徑,而不是Web路徑。

錯誤日誌中會包含類似上述例子的多種型別的資訊。此外,CGI指令碼中任何輸出到stderr(標準錯誤)的資訊會作為除錯資訊原封不動地記錄到錯誤日誌中。

使用者可以增加或刪除錯誤日誌的項。但是對某些特殊請求,在訪問日誌(access log)中也會有相應的記錄,比如上述例子在訪問日誌中也會有相應的記錄,其狀態碼是403,因為訪問日誌也可以定製,所以可以從訪問日誌中得到錯誤事件的更多資訊。

測試中,對任何問題持續監視錯誤日誌是非常有用的。在unix系統中,可以這樣做:

tail -f error_log