在php程序编写中,养成写入log文件的编程习惯,是一个很好的编程习惯,程序员都应该学会这种编程思想,不要太浮躁。前期编程没有日志记录,往往会带来后期维护和调式的困难,付出的时间和精力将会更多。

error_log()是发送错误信息到某个地方的一个PHP函数,在程序编程中比较常见,尤其是在程序调试阶段。

本文将用实例讲解一下error_log()这个函数的用法,以及一些需要注意的问题。

<?php
$str=’这是条错误信息。’;
error_log($str,3,’errors.log’);
?>

上述是最常用的error_log()例子,它的作用是把一条信息写入errors.log这个文件里,这个文件如果不存在则自动创建。在这个例子中,我们看到有一个参数“3”,注意这个数字“3”不能更改也不能去掉。

下面列举一下使用error_log()这个函数的过程中可能出现的问题:

(1)程序报错提示:Warning: error_log() [function.error-log]: failed to open stream: Permission denied in …on line …
上述错误的出现,是因为文件没有写权限,开启该目录的文件写权限即可。

(3)写入到log文件中的信息不能换行
使用error_log()写入log文件,会发现文字是没有换行的,可以对以上代码做如下改进:

<?php
$str=”这是条错误信息。\r\n”;
error_log($str,3,’errors.log’);
?>

注意$str,用的是双引号(php单引号和双引号的区别),还在字符串结尾加上了\r\n。这跟第一个实例那个写法是不同的。

通过 PHP手册,我们可以知道,该函数可以向服务器、文件或远程目标发送一个错误日志。
它接受四个参数:
1、message:必需。要记录的错误消息。

2、message_type:可选。规定错误记录的类型。
可能的记录类型:
0 – 默认。根据在php.ini 文件中的error_log配置,错误被发送到服务器日志系统或文件。
1 – 错误被发送到destination参数中的邮件地址。只有该类型使用 headers 参数。
例如:error_log(“this is a test string”,1,”admin@4u4v.cn”,”From:4u4v@163.com”);
2 – 通过PHP debugging 连接来发送错误。该选项只在 PHP 3 中可用。
3 – 错误发送到指定文件中。
示例:error_log(“this is a test string”,3,”/home/www/log/error_log”);

3、destination:可选。规定向何处发送错误消息。该参数的值依赖于 “type” 参数的值。

4、extra_headers:可选。只在 “type” 为 1 时使用。
规定附加的头部,比如 From, Cc 以及 Bcc。由 CRLF (\r\n) 分隔。

注释:在发送电子邮件时,必须包含 From 头部。可以在php.ini文件中或者通过此参数设置。