***CI异常记录到日志:CodeIgniter中设计一个全局exception hook

在CodeIgniter中,当发生异常时,经常要通知系统管理员,因此有必要在全局的高度上 
捕捉异常,因此可以写一个hook, 
比如在config目录的hook.php中,加入:

$hook[‘pre_controller‘][] = array(
                   ‘class‘    => ‘ExceptionHook‘,
                   ‘function‘ => ‘SetExceptionHandler‘,
                   ‘filename‘ => ‘ExceptionHook.php‘,
                   ‘filepath‘ => ‘hooks‘
                  ); 

然后在应用的hook目录下,编写ExceptionHook.php

<?php 

class ExceptionHook
{
  public function SetExceptionHandler()
  {
    set_exception_handler(array($this, ‘HandleExceptions‘));
  } 

  public function HandleExceptions($exception)
  { 

  $msg =‘Exception of type \‘‘.get_class($exception).‘\‘ occurred with Message: ‘.$exception->getMessage().‘ in File ‘.$exception->getFile().‘ at Line ‘.$exception->getLine(); 

        $msg .="\r\n Backtrace \r\n";
$msg .=$exception->getTraceAsString(); 

        log_message(‘error‘, $msg, TRUE); 

mail(‘[email protected]‘, ‘An Exception Occurred‘, $msg, ‘From: [email protected]‘);    

}
?>
时间: 2024-08-10 09:48:35

***CI异常记录到日志:CodeIgniter中设计一个全局exception hook的相关文章

通用权限管理系统记录登录日志中的一个问题

最近,在使用通用权限管理系统开发一个项目,数据库是MSSQL,登录时出现一个错误,发现是记录登录日志时出现的错误. 由于每次登录,都会记录登录日志,就是在记录日志时出现了错误. 先把错误截图 可以看出与记录登录日志的表BaseLoginLog的ID有关系,打开该表 发现该表的ID是nvarchar(50)类型,查询一下该表的数据,截图如下 可看到,ID实际存储的是GUID类型数据,然后我在调试底层代码,找到三个地方: 1 /// <summary> 2 /// 记录登录日志 3 /// <

ubuntu下定时弹窗记录工作日志

背景 记录工作日志,是一个很好的习惯,但不容易坚持,本来打算每天记录,但经常拖延,拖着拖着,有一些事情就忘记了. 等到写周报或月报的时候,才会开始翻邮件,聊天记录,各个仓库的提交log等,回忆都干了些啥. 为了解决这个问题,需要有一个工具来帮助我,提高工作日志的完成度. 最开始的设想是,自动定时发送一个邮件或聊天消息,在其中回复工作记录.但转念一想,公司的系统就是这么做的,每天一封邮件提醒我写工作日志,但没什么实际作用.看来需要更加强力的提醒才行.想来想去,试试就用弹窗吧. 任务管理Taskwa

PHP的日志记录-错误与异常记录

提到 Nginx + PHP 服务的错误日志,我们通常能想到的有 Nginx 的 access 日志.error 日志以及 PHP 的 error 日志.虽然看起来是个很简单的问题,但里面其实又牵扯到应用配置以及日志记录位置的问题,如果是在 ubuntu 等系统下使用 apt-get 的方式来安装,其自有一套较为合理的的配置文件可用.再者运行的应用程序中的配置也会影响到日志记录的方式及内容. 错误与异常的区别 关于错误与异常,兄弟连来给大家举一个简单的例子来理解: <?php try { 1 /

记录到日志中的异常栈缺失

项目中有这样一个场景: 使用反射处理所有业务调用,在反射调用点使用try-catch集中处理异常,并将异常信息记录到日志.其中日志记录是异步的. 问题: 记录到日志中的异常的StackTrace和有时候和Debug时抛出的异常的StackTrace不一样. 原因: 由于记录日志是异步的,如果记录日志发生在throw之前,记录到日志中的异常的StackTrace就是正确的(异常真正发生点到throw点的所有StackTrace):如果记录日志发生在throw之后,记录到日志中的异常的StackTr

SpringBoot使用AOP记录请求日志和异常日志

本文基础WEB环境使用SpringBoot及Spring-Data-Jpa构建 关于SpringBoot及JPA用法本文不再过多讨论,下面是引入的jar: 起步依赖 web及aop依赖 jpa依赖 mysql驱动 本文着重AOP的使用,你也可以使用自己构建的环境 由于本文中使用的JPA,因此首先创建保存日志及保存异常的实体类,如果你使用的是Mybatis,则需要首先创建表然后根据表来逆向生成实体类 保存日志的实体类: 日志实体 保存异常的实体类: 异常实体 接下来我们定义一个Operation注

异常记录(写txt日志文件)

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace WebBuild_CRM.Common { public class ExceptionRecord { public static void RecordException(Exception ex) { FileStream fileStream = null; Str

【ThinkingInJava】25、将异常输出记录到日志

/** * 书本:<Thinking In Java> * 功能:将异常输出记录到日志中. * 文件:LoggingExceptions.java * 时间:2015年4月8日21:11:51 * 作者:cutter_point */ package Lesson12_error_handling_with_exceptions; import java.io.PrintWriter; import java.io.StringWriter; import java.util.logging.

Tomcat会话超时时怎样记录操作日志,满足安全审计要求

众所周知.在实际的Web应用程序中,会话管理一般都採用Web容器会话管理功能. 使用Tomcat做Webserver也是如此,并且从安全的角度考虑,尽量避免去更改和干预Web容器的会话管理功能. Tomcat会话管理功能肯定比我们自己做出来要全面和可靠,况且Tomcat是主流开源社区维护的.有专门的团队来开发和维护.一旦爆出安全漏洞,也能非常快被修复. 在实际开发中,为了满足安全审计的要求.Web应用程序一旦有会话注销.就应该记录操作日志.注销一般分为操作者主动注销.应用程序检測到异常攻击主动注

C# 使用Trace记录程序日志

在程序开发中,我们通常需要记录程序运行的状态,在程序部署后,发生的异常可以记录在日志中,便于发现程序潜在的问题.在.NET平台,有很多优秀的日志类库,例如Log4Net.如果程序很小,我们可以自己通过C#的Trace类来实现一个基本的日志记录功能.下面直接看代码: public class TraceHelper { private static TraceHelper _traceHelper; private TraceHelper() { } public static TraceHelp