php实现的debug log日志操作类实例

 更新时间:2016年07月12日 09:33:25   作者:dotcoo  
这篇文章主要介绍了php实现的debug log日志操作类,结合实例形式分析了php针对日志的相关操作技巧,包括php数组、字符串及文件的写操作等用法,需要的朋友可以参考下

本文实例讲述了php实现的debug log日志操作类。分享给大家供大家参考,具体如下:

<?php
class Tool {
  public static function log($info) {
    $time = date('m-d H:i:s');
    $backtrace = debug_backtrace();
    $backtrace_line = array_shift($backtrace); // 哪一行调用的log方法
    $backtrace_call = array_shift($backtrace); // 谁调用的log方法
    $file = substr($backtrace_line['file'], strlen($_SERVER['DOCUMENT_ROOT']));
    $line = $backtrace_line['line'];
    $class = isset($backtrace_call['class']) ? $backtrace_call['class'] : '';
    $type = isset($backtrace_call['type']) ? $backtrace_call['type'] : '';
    $func = $backtrace_call['function'];
    file_put_contents($_SERVER['DOCUMENT_ROOT'].'/debug.log', "$time $file:$line $class$type$func: $info\n", FILE_APPEND);
  }
}
class Action {
  public function a() {
    $this->b();
  }
  public function b() {
    $this->c();
  }
  public function c() {
    Tool::log('sdfsdf');
  }
}
$action = new Action();
$action->a();

这里再补充一个函数:

function loginfo($format) {
  $args = func_get_args();
  array_shift($args);
  $d = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 1)[0];
  $info = vsprintf($format, $args);
  $data = sprintf("%s %s,%d: %s\n", date("Ymd His"), $d["file"], $d["line"], $info);
  file_put_contents(__DIR__."/log.txt", $data, FILE_APPEND);
}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP错误与异常处理方法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • 基于Surprise协同过滤实现短视频推荐方法示例

    基于Surprise协同过滤实现短视频推荐方法示例

    这篇文章主要为大家介绍了基于Surprise协同过滤实现短视频推荐方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • PHP结构型模式之外观模式

    PHP结构型模式之外观模式

    这篇文章主要介绍了PHP结构型模式之外观模式,外观模式是一种结构型模式,它提供了一个简单的接口,隐藏了系统的复杂性,为客户端提供了一个简单的入口点
    2023-04-04
  • 将FCKeditor导入PHP+SMARTY的实现方法

    将FCKeditor导入PHP+SMARTY的实现方法

    这篇文章主要介绍了将FCKeditor导入PHP+SMARTY的实现方法,涉及整合FCKeditor与SMARTY的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01
  • 浅谈Laravel中使用Slack进行异常通知

    浅谈Laravel中使用Slack进行异常通知

    异常处理是软件开发过程中无法逃避的问题。对于一套设计良好代码高效的程序,出现异常的可能性会比较低,但这并不意味着不会出现异常,有些异常甚至会引起严重的后果,所以如何及时的发现程序中的异常并处理它便显得十分重要了。
    2021-05-05
  • PHP删除二维数组中相同元素及数组重复值的方法示例

    PHP删除二维数组中相同元素及数组重复值的方法示例

    这篇文章主要介绍了PHP删除二维数组中相同元素及数组重复值的方法,涉及php针对数组的遍历、判断、比较等相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • phpadmin如何导入导出大数据文件及php.ini参数修改

    phpadmin如何导入导出大数据文件及php.ini参数修改

    新版本的phpadmin导入限定是8M,老版本的可能2M;如果遇到几十兆的该怎么办呢?接下来本文将介绍详细的修改方法,感兴趣的你可不要错过了哈,或许本文提供的知识点对你有所帮助
    2013-02-02
  • php链式操作mysql数据库(封装类带使用示例)

    php链式操作mysql数据库(封装类带使用示例)

    本文代码将一些简单常用的SQL语句,拆分、封装成链式函数与终结函数,链式操作没有先后之分,实现傻瓜式mysql数据库操作。 同时学习下静态成员函数,实现链式操作的具体语法。
    2023-02-02
  • 对PHP PDO的一些认识小结

    对PHP PDO的一些认识小结

    这篇文章主要介绍了对PHP PDO的一些认识小结,本文讲解了什么是PDO、启用PDO的配置方法、PDO的预定义类、事务处理例子等内容,需要的朋友可以参考下
    2015-01-01
  • 如何用RabbitMQ和Swoole实现一个异步任务系统

    如何用RabbitMQ和Swoole实现一个异步任务系统

    从最开始的使用redis实现的单进程消费的异步任务系统到加入swoole的多进程消费模式,现在,我们的异步任务系统终于又能迈进一步。这回基于RabbitMQ的异步任务系统设计的的更加完善,包括多进程消费,异常重试等。
    2021-05-05
  • php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。

    php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。

    array_push() 定义和用法array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度
    2011-11-11

最新评论