[php] 简单的实现一个错误接管类
自己弄的一个错误接管类:
<?php //----------------------------------
// Leephp 错误接管类
// 2017-07-06
// PengchongLee
//---------------------------------- // error_reporting — 设置应该报告何种 PHP 错误
error_reporting(0); class Erro
{
public function __construct()
{
$this->iserr();
}
public function iserr()
{
// set_exception_handler — 设置用户自定义的异常处理函数
set_exception_handler([$this,'ex']); // set_error_handler — 设置用户自定义的错误处理函数
set_error_handler([$this,'err']); // register_shutdown_function — 注册一个会在php中止时执行的函数
register_shutdown_function( [ $this,'last_error' ]);
} // 异常接管
public function ex($ex)
{
// 获取错误异常信息
$message = $ex->getMessage();
// 获取错误异常代码
$code = $ex->getCode();
// 获取错误异常文件
$file = $ex->getFile();
// 获取错误异常文件行数
$line = $ex->getLine();
} // 错误接管
public function err( $code, $message,$file ,$line )
{
// 记录日志
$this->errlog( $code, $message,$file ,$line );
} // 脚本结束前获取最后错误
public function last_error()
{
// error_get_last — 获取最后发生的错误
$last = error_get_last();
// set_error_handler有些错误是无法获取的,所以价格判断
if($last['type']==1 || $last['type']==4 ||$last['type']==16 ||$last['type']==64 ||$last['type']==128){
$this->errlog( $last['type'],$last['message'],$last['file'],$last['line'] );
}
} // 错误信息收集并记录 (参数传输的顺序不一样,参数还不一样)
public function errlog( $code, $message,$file ,$line )
{
// 拼接错误信息
$errstr = date('Y-m-d h:i:s')."\r\n";
$errstr .= ' 错误级别:'.$code."\r\n";
$errstr .= ' 错误信息:'.$message."\r\n";
$errstr .= ' 错误文件:'.$file."\r\n";
$errstr .= ' 错误行数:'.$line."\r\n";
$errstr .= "\r\n"; // error_log — 发送错误信息到某个地方
error_log($errstr,3,__DIR__.'/error.log');
} }
[php] 简单的实现一个错误接管类的更多相关文章
- SpringMVC form:form的一个错误(没有传到前台绑定类)
SpringMVC form:form的一个错误(没有传到前台绑定类) 报错信息: Neither BindingResult nor plain target object for bean nam ...
- PageRank简单实现中的一个错误
在我的一篇博客PageRank中,在5.1 算法实现中简单实现部分原本是有一个错误的.这个错误也体现出我当时对PageRank算法有理解上的偏差. 这是个什么样的错误呢?是这样的: 简单实现中计算每个 ...
- 记录Python类与继承的一个错误
今天在学python的类与继承的时候遇到一个错误,原来是自己在ctrl+c ctrl+v的时候漏了一个括号 class Car(): def __init__(self,make,year,mode ...
- 【Objective-C】0-第一个OC的类
OC是一门面向对象的语言,因此它也有类.对象.静态\动态方法.成员变量的概念.这讲就来创建第一个OC的类. 一.语法简介 1.类 在Java中,我们用1个.java文件就可以描述清楚一个类:在OC中, ...
- 第一个OC的类
来源:http://www.cnblogs.com/mjios/archive/2013/04/06/3002814.html 本文目录 一.语法简介 二.用Xcode创建第一个OC的类 三.第一个类 ...
- 【Objective-C】05-第一个OC的类
OC是一门面向对象的语言,因此它也有类.对象.静态\动态方法.成员变量的概念.这讲就来创建第一个OC的类. 一.语法简介 1.类 在Java中,我们用1个.java文件就可以描述清楚一个类:在OC中, ...
- 关于Java中的继承和组合的一个错误使用的例子
[TOC] 关于Java中的继承和组合的一个错误使用的例子 相信绝大多数人都比较熟悉Java中的「继承」和「组合」这两个东西,本篇文章就主要就这两个话题谈论一下.如果我某些地方写的不对,或者比较幼稚, ...
- 一个使用CSocket类的网络通信实例
http://www.cppblog.com/changshoumeng/archive/2010/05/14/115413.html 3.8 一个使用CSocket类的网络通信实例 本例采用CSoc ...
- JMeter一个错误the target server failed to respond--JMeter坑
问题:1.在测试一个http景象,特别是集波动TPS时刻,出现了一个错误.它现在是一个必须错误(压力顺利时却零星的错误,甚至很少见): 每次必现错误(開始一直怀疑是网络或程序的问题) 2.失败事务 ...
随机推荐
- 记录一些服务端术语和搭建web服务器
菜单快捷导航 服务端常用术语 搭建web服务器和配置虚拟主机 记录一些服务端方面的常用术语 1.CS架构和BS架构 1.1 CS架构 CS(Client/Server),基于安装包类型的桌面或手机软件 ...
- Python第四章-流程控制
流程控制 在以前的代码中,所有的代码都是交由 Python 忠实地从头执行到结束.但是这些远远不够.很多时候需要根据不同的情况执行不同的代码. 如果你想改变这一工作流程,应该怎么做? 就像这样的情况: ...
- Kaggle竞赛入门:决策树算法的Python实现
本文翻译自kaggle learn,也就是kaggle官方最快入门kaggle竞赛的教程,强调python编程实践和数学思想(而没有涉及数学细节),笔者在不影响算法和程序理解的基础上删除了一些不必要的 ...
- Leetcode_239. 滑动窗口最大值
单调队列模板题,扫描一遍,队尾维护单调性,队头维护不超过大小为k的区间. code class Solution { public: vector<int> maxSlidingWindo ...
- 17.用cmd创建maven web工程
1.跳转到需要创建maven工程的目录,输入 mvn archetype:generate 2.找到webapp的那一项,输入它的序号(这里是10) 3.输入groupId,artifactId,ve ...
- [codevs1036]商务旅行<LCA:tarjan&倍增>
题目链接:http://codevs.cn/problem/1036/ 今天翻箱倒柜的把这题翻出来做了,以前做的时候没怎么理解,所以今天来重做一下 这题是一个LCA裸题,基本上就把另一道裸题小机房的树 ...
- [noip2016]蚯蚓<单调队列+模拟>
题目链接:https://vijos.org/p/2007 题目链接:https://www.luogu.org/problem/show?pid=2827#sub 说实话当两个网站给出AC后,我很感 ...
- 使用Spring管理数据库事务
在整个JavaWeb项目开发中,事务是用来开发可靠性网络应用程序的最关键部分.当应用程序与后端资源进行交互时,就会用到事务,这里的后端资源包括数据库.MQ.ERP等.而数据库事务是最常见的类型,而我们 ...
- 【WPF学习】第六十六章 支持可视化状态
上一章介绍的ColorPicker控件,是控件设计的最好示例.因为其行为和可视化外观是精心分离的,所以其他设计人员可开发动态改变其外观的新模板. ColorPicker控件如此简单的一个原因是不涉及状 ...
- alg-最长公共子序列
class Solution { public: std::string LongestCommonSubsequence(const std::string& s1, const std:: ...