PHP error_log()将错误信息写入一个文件(定义和用法)


Posted in PHP onOctober 25, 2013

在php程序编写中,养成写入log文件的编程习惯,是一个很好的编程习惯,程序员都应该学会这种编程思想,不要太浮躁。前期编程的不严谨,往往会带来后期维护和调式的困难,付出的时间和精力将会更多。
error_log() 是发送错误信息到某个地方的一个函数,在程序编程中比较常见,尤其是在程序调试阶段。
本文将用实例讲解一下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 ...
上述错误的出现,是因为文件没有写权限,开启该目录的文件写权限即可。
(2)写入到log文件中的信息不能换行
使用error_log()写入log文件,会发现文字是没有换行的,可以对以上代码做如下改进:
<?php
$str="这是条错误信息。\r\n";
error_log($str,3,'errors.log');
?>

注意$str,用的是双引号(php单引号和双引号的区别),还在字符串结尾加上了\r\n。这跟第一个实例那个写法是不同的。
下面对error_log()函数做一些介绍
格式
bool error_log ( string $message [, int $message_type=0 [, string $destination [, string $extra_headers ]]] )
把错误信息发送到 web 服务器的错误日志,或者到一个文件里。
message     应该被记录的错误信息。
message_type
设置错误应该发送到何处。使用 操作系统的日志机制或者一个文件,取决于 error_log 指令设置了什么。可能的信息类型有以下几个:
 0 message 发送到 PHP 的系统日志。 这是个默认的选项。iis服务器运行调试php程序错误信息生成log文件在哪里。
 1 message 发送到参数 destination 设置的邮件地址。 第四个参数 extra_headers 只有在这个类型里才会被用到。
 2 不再是一个选项。
 3 message 被发送到位置为 destination 的文件里。 字符 message 不会默认被当做新的一行,而是追加到行末。
 4 message 直接发送到 SAPI 的日志处理程序中。
destination 目标。它的含义描述于以上,由 message_type 参数所决定。
extra_headers 额外的头。当 message_type 设置为 1 的时候使用。 该信息类型使用了 mail() 的同一个内置函数。

返回值   成功时返回 TRUE, 或者在失败时返回 FALSE。

再来个例子

发送一封带有自定义错误的电子邮件:
<?php
$test=2; if ($test>1) {
error_log("A custom error has been triggered", 1,"someone@example.com","From: webmaster@example.com"); 
} 
?>

输出:
A custom error has been triggered
PHP 相关文章推荐
php zend解密软件绿色版测试可用
Apr 14 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
php实现数组重复数字统计实例
Sep 30 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 PHP
PHP实现页面静态化深入讲解
Mar 04 PHP
PHP基本语法
Mar 31 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 #PHP
php中并发读写文件冲突的解决方案
Oct 25 #PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 #PHP
学习php分页代码实例
Oct 24 #PHP
获取URL文件名后缀
Oct 24 #PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 #PHP
php 修改、增加xml结点属性的实现代码
Oct 22 #PHP
You might like
Array of country list in PHP with Zend Framework
2011/10/17 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
关于尾递归的使用详解
2013/05/02 PHP
php模板原理讲解
2013/11/13 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
微信小程序中weui用法解析
2019/10/21 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python遍历类中所有成员的方法
2015/03/18 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
spyder常用快捷键(分享)
2017/07/19 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
python读写csv文件方法详细总结
2019/07/05 Python
python对常见数据类型的遍历解析
2019/08/27 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
给妈妈洗脚活动方案
2014/08/16 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
大学生个人总结范文
2015/02/15 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
python中subplot大小的设置步骤
2021/06/28 Python