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