error_log() 函數向伺服器錯誤記錄、檔案或遠端目標傳送錯誤訊息。它的語法
error_log(message,type,destination,headers);
參數 | 描述 |
---|---|
message | 必需。規定要記錄的錯誤訊息。 |
type |
可選。規定錯誤應該要送到何處。可能的值:
|
destination | #可選。規定錯誤訊息的目標。該值由 type 參數的值決定。 |
headers |
可選。規定額外的頭,例如 From、Cc 和 Bcc。此資訊類型使用了 mail() 的同一個內建函數。 僅當 message_type 設定為 1 的時候使用。 應使用 CRLF (\r\n) 來分隔多個頭。 |
其實對我們來說,日誌為了簡單起見,一般直接使用類型3就比較合適了,把日誌檔案寫到自己需要的檔案中。
為了範例error_log()函數的簡單使用,我們個例子說明。假設我們資料庫抽象類別使用PEAR::DB類,現在我想在程式中記錄我們的程式是否有執行錯誤。那我們使用error_log()來記錄我們那些SQL語句執行錯誤或失敗了,至少我們的PEAR::DB類別提供了DB::isError() 方法來取得某個執行結果物件是否有錯誤,那麼我們就能夠旁斷是否執行某條SQL出現了錯誤,再來考慮是否要記錄日誌,同時物件有個userinfo的屬性,該屬性記錄了錯誤的SQL語句,那麼我們可以建構這樣一個函數:
function logError($object) { if(DB::isError($object)) { error_log(date("[Y-m-d H:i:s]")." -[".$_SERVER['REQUEST_URI']."] :".$object -> userinfo."\n", 3, "/tmp/php_sql_err.log"); return true; } return false; }
這個函數就是能夠記錄發現了錯誤SQL的地方,那麼自動會把時間,當前頁面,和錯誤的SQL語句資訊記錄到/tmp/php_sql_err.log 文件當中,那麼,當我們在調試程序的時候,發現資料提取不正確或沒有資料提取的時候,那麼我們完全可以查看/tmp/php_sql_err.log 檔案來查看我們的錯誤頁面和錯誤的SQL語句。
當然,我們必須在執行SQL查詢的程式中去使用這個函數,例如我們執行一個寫一個提取新聞資訊的函數:
function getNewsContent($news_id, $field="") { global $db; $result = $db->getRow("SELECT $field FROM news WHERE news_id = '$news_id'"); if (logError($result)) { return false; } return $result; }
我們在裡面判斷SQL是否錯誤,如果錯誤了則回傳false,然後我們就可以查看日誌一下,看看我們的函數運行是否如我們預期想像的一樣。
我們執行: tail /tmp/php_sql_err.log
可以看到類似這樣的資訊:
[2006-01-12 11:44:34] -[/news_list 。 to use near 'FROM news WHERE news_id = '1']
單元測試。
當然,你也可以利用error_log()函數做更多記錄錯誤日誌,方便PHP開發,這個全是由自己決定。
#
<code> $address = post('address'); $group_add = explode(',',$address); $url ="/usr/local/apache/eyoung/tmp/maillog_".date("Y-m-d").".log"; foreach($group_add as $value) { /** {{{ modify by muzhaoyang -2006.12.13- 记log * 已空格分隔数据,记录的数据为写文本时间 拉票人ID 选手ID 发信地址 */ $logstr=date("H:i:s")." ".$uid." ".$star_uid." ".$value."\n"; error_log($logstr,3,$url); //}}} } </code>
以上是php error_log()函數的使用簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!