Rumah > pembangunan bahagian belakang > tutorial php > php error_log()函数的使用简介

php error_log()函数的使用简介

怪我咯
Lepaskan: 2023-03-13 12:00:01
asal
1600 orang telah melayarinya

error_log() 函数向服务器错误记录、文件或远程目标发送错误消息。它的语法

error_log(message,type,destination,headers);
Salin selepas log masuk
参数描述
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;
}
Salin selepas log masuk

这个函数就是能够记录发现了错误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;
}
Salin selepas log masuk

我们在里面判断SQL是否错误,如果错误了则返回false,然后我们就可以查看日志一下,看我们的函数运行是否如我们预期想象的一样。
我们执行: tail /tmp/php_sql_err.log
能看到类似于这样的信息:

[2006-01-12 11:44:34] -[/news_list.php?news_id=1] :SELECT FROM news WHERE news_id = '1' [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version fo
r the right syntax 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>
Salin selepas log masuk


Atas ialah kandungan terperinci php error_log()函数的使用简介. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan