加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

浅谈php自定义错误日志

发布时间:2020-12-13 02:25:07 所属栏目:PHP教程 来源:网络整理
导读:《:浅谈php自定义错误日志》要点: 本文介绍了:浅谈php自定义错误日志,希望对您有用。如果有疑问,可以联系我们。 平时经常看php的错误日志,很少有机会去本身动手写日志,看了王健的《最佳日志实践》觉得写一个清晰明了,结构分明的日志还是非常有必要的. P

《:浅谈php自定义错误日志》要点:
本文介绍了:浅谈php自定义错误日志,希望对您有用。如果有疑问,可以联系我们。

平时经常看php的错误日志,很少有机会去本身动手写日志,看了王健的《最佳日志实践》觉得写一个清晰明了,结构分明的日志还是非常有必要的.PHP应用

在写日志前,我们问问本身:为什么我们有时要记录自定义的日志呢?而不用系统默认的日志记录方式呢?

我认为有两个原因:

1.团队必要一个统一格式的日志方便管理

2.大量无用错误日志占据硬盘空间,仅需记录有意义的日志.

?那么,实践一下.

1.打开你的php.ini

?2.打开日志记录,将

代码如下:

log_errors = Off

改成

代码如下:

log_errors = On

3.将php.ini保留退出并重启web服务器

4.在你的代码最前面加上如下代码

代码如下:

<?php
//错误处理函数
function myErrorHandler($errno,$errstr,$errfile,$errline)
{
??? $log_file = "./php_%s_log_".date("Ymd").".log";//定义日志文件存放目录和文件名
??? $template = '';
??? switch ($errno) {
??? case E_USER_ERROR:
??????? $template .= "用户ERROR级错误,必需修复 错误编号[$errno] $errstr ";
??????? $template .= "错误位置 文件$errfile,第 $errline 行n";
??????? $log_file = sprintf($log_file,'error');
??????? exit(1);//系统退出
??????? break;
??? case E_USER_WARNING:
??????? $template .= "用户WARNING级错误,建议修复 错误编号[$errno] $errstr ";
??????? $template .= "错误位置 文件$errfile,'warning');
??????? break;
??? case E_USER_NOTICE:
??????? $template .= "用户NOTICE级错误,不影响系统,可不修复 错误编号[$errno] $errstr ";
??????? $template .= "错误位置 文件$errfile,第 $errline 行n";
??? $log_file = sprintf($log_file,'notice');
??????? break;
??? default:
??????? $template .= "未知错误类型: 错误编号[$errno] $errstr? ";
??????? $template .= "错误位置 文件$errfile,'unknown');
??????? break;
??? }
??? file_put_contents($log_file,$template,FILE_APPEND);
??? return true;
}
$error_handler = set_error_handler("myErrorHandler");//开启自定义错误日志

5.试着在刚才的代码后写下一段错误代码

echo 1/0;

看看你定义的路径下是否多了一个日志文件呢?:)

注:以下级别的错误不能由用户定义的函数来处理: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING,和在 调用 set_error_handler() 函数所在文件中产生的大多数 E_STRICT.

?不过当你开启了错误日志系统(php.ini中的log_error = on)并且指定了系统日志文件(同样也是php.ini中的error_log=路径名),并且error_reporting开启了全部后,以上的错误都会作为系统错误日志而记录在你定义的文件中.

以上便是本文所述的全部内容了,希望大家能对php自定义错误日志有新的认识.

《:浅谈php自定义错误日志》是否对您有启发,欢迎查看更多与《:浅谈php自定义错误日志》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读