• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Log4php 使用心得

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

使用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

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHPMVC运用发布时间:2022-07-10
下一篇:
C++/Php/Python 语言执行shell命令 - 旭东的博客发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap