|
|
|
|
|
在php程序編寫中,養(yǎng)成寫入log文件的編程習慣,是一個很好的編程習慣,程序員都應(yīng)該學會這種編程思想,不要太浮躁。前期編程的不嚴謹,往往會帶來后期維護和調(diào)式的困難,付出的時間和精力將會更多。
error_log() 是發(fā)送錯誤信息到某個地方的一個函數(shù),在程序編程中比較常見,尤其是在程序調(diào)試階段。
本文將用實例講解一下error_log()這個函數(shù)的用法,以及一些需要注意的問題。
實例
<?php
$str = '這是條錯誤信息。';
error_log($str, 3, 'errors.log');
?>
上述是最常用的error_log()例子,它的作用是把一條信息寫入errors.log這個文件里,這個文件如果不存在則自動創(chuàng)建。在這個例子中,我們看到有一個參數(shù)“3”,注意這個數(shù)字“3”不能更改也不能去掉。
error_log()可能出現(xiàn)的問題
◆問題一:
Warning: error_log() [function.error-log]: failed to open stream: Permission denied in ...on line ...
上述錯誤的出現(xiàn),是因為文件沒有寫權(quán)限,開啟該目錄的文件寫權(quán)限即可。
◆問題二:
log文件為什么不能換行?
使用error_log()寫入log文件,會發(fā)現(xiàn)文字是沒有換行的,這給閱讀帶來很大的困難,需要改進下。經(jīng)研究,使用如下代碼,可以寫入換行的信息。
<?php
$str = "這是條錯誤信息。\r\n";
error_log($str, 3, 'errors.log');
?>
注意$str,用的是雙引號(php單引號和雙引號的區(qū)別),還在字符串結(jié)尾加上了\r\n。這跟第一個實例那個寫法是不同的。
知識擴充
下面補充error_log()函數(shù)的使用知識
格式
bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )
把錯誤信息發(fā)送到 web 服務(wù)器的錯誤日志,或者到一個文件里。
message
應(yīng)該被記錄的錯誤信息。
message_type
設(shè)置錯誤應(yīng)該發(fā)送到何處。使用 操作系統(tǒng)的日志機制或者一個文件,取決于 error_log 指令設(shè)置了什么。
可能的信息類型有以下幾個:
0 | message 發(fā)送到 PHP 的系統(tǒng)日志。 這是個默認的選項。 iis服務(wù)器運行調(diào)試php程序錯誤信息生成log文件在哪里 |
1 | message 發(fā)送到參數(shù) destination 設(shè)置的郵件地址。 第四個參數(shù) extra_headers 只有在這個類型里才會被用到。 |
2 | 不再是一個選項。 |
3 | message 被發(fā)送到位置為 destination 的文件里。 字符 message 不會默認被當做新的一行,而是追加到行末。 |
4 | message 直接發(fā)送到 SAPI 的日志處理程序中。 |
destination
目標。它的含義描述于以上,由 message_type 參數(shù)所決定。
extra_headers
額外的頭。當 message_type 設(shè)置為 1 的時候使用。 該信息類型使用了 mail() 的同一個內(nèi)置函數(shù)。
返回值
成功時返回 TRUE, 或者在失敗時返回 FALSE。