首頁  >  文章  >  後端開發  >  php error_log()函數的使用簡介

php error_log()函數的使用簡介

怪我咯
怪我咯原創
2017-07-10 14:28:451577瀏覽

error_log() 函數向伺服器錯誤記錄、檔案或遠端目標傳送錯誤訊息。它的語法

error_log(message,type,destination,headers);
參數 描述
message 必需。規定要記錄的錯誤訊息。
type

可選。規定錯誤應該要送到何處。可能的值:

  • 0 - 預設。訊息被傳送到 PHP 的系統日誌,使用作業系統的日誌機製或一個文件,取決於 php.ini 中如何 error_log 指令。

  • 1 - 訊息被傳送到參數 destination 設定的郵件地址。第四個參數 extra_headers 只有在這個型別裡才會被用到。

  • 2 - 不再使用(只用在PHP 3 中)

  • 3 - 訊息被傳送到位置為destination 的文件裡。字元 message 不會預設被當做新的一行。

  • 4 - 訊息直接傳送到 SAPI 日誌處理程序中。

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']

#大致是因為我們select的時候,沒有把需要提取的字段名寫進去,那麼我們就可以檢查news_list.php文件,減產getNewsContent ()函數法向沒有傳遞$field參數進去,導致SQL執行錯誤。所以error_log()函數就幫助檢查我們的SQL寫的是否正確,或者是參數沒有傳遞正確,這樣大大的減輕了開發負擔,想但於了對我們的程式進行了

單元測試

當然,你也可以利用error_log()函數做更多記錄錯誤日誌,方便PHP開發,這個全是由自己決定。


本工作中使用它來記簡單的log日誌


#

<code>
            $address    = post(&#39;address&#39;);
            $group_add  = explode(&#39;,&#39;,$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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn