博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Log4php 使用心得
阅读量:6406 次
发布时间:2019-06-23

本文共 1145 字,大约阅读时间需要 3 分钟。

使用log4php 记录系统日志:

1、自动拦截php报出的错误,写日志

2、手动打印错误

set_error_handler('captureNormal',E_ERROR | E_PARSE);set_exception_handler('captureException');register_shutdown_function('captureShutdown');

 

自动拦截错误时,其中拦截captureShutDown中的处理不能写日志,进过调试发现log4php中有自己的错误处理函数,在错误处理函数中将写日志功能关闭了。

/** * Default constructor. * @param string $name Appender name */public function __construct($name = '') {    $this->name = $name;        // Closes the appender on shutdown. Better than a destructor because    // it will be called even if a fatal error occurs (destructor won't).    register_shutdown_function(array($this, 'close'));        if ($this->requiresLayout) {        $this->layout = $this->getDefaultLayout();    }}

 

LoggerAppenderFile 继承与 LoggerAppendder

其中重写了close方法

public function close() {    if($this->closed != true) {        if($this->fp and $this->layout !== null) {            if(flock($this->fp, LOCK_EX)) {                fwrite($this->fp, $this->layout->getFooter());                flock($this->fp, LOCK_UN);            }            fclose($this->fp);        }        $this->closed = true;    }}

 

 

调试中发现,调用close方法没有堆栈信息,猜想多半是使用了 register_shutdown_function

 

 

 

转载地址:http://nkqea.baihongyu.com/

你可能感兴趣的文章
centos7.x搭建svn server
查看>>
原码编译安装openssh6.7p1
查看>>
项目实战:自定义监控项--监控CPU信息
查看>>
easyui-datetimebox设置默认时分秒00:00:00
查看>>
蚂蚁分类信息系统5.8多城市UTF8开源优化版
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
分享Silverlight新鲜事 - Silverlight Firestarter全球会议
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>
网络诊断工具之—路由追踪tracert命令
查看>>
Java模拟HTTP的Get和Post请求(增强)
查看>>
php 环境搭建(windows php+apache)
查看>>
让虚拟机的软盘盘符不显示(适用于所有windows系统包括Windows Server)
查看>>
Cygwin不好用
查看>>
jQuery插件之验证控件jquery.validate.js
查看>>