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


Posted in PHP onJuly 12, 2016

本文实例讲述了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代码的53条建议
Mar 27 PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
php curl_init函数用法
Jan 31 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
php数组生成html下拉列表的方法
Jul 20 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
PHP中实现中文字串截取无乱码的解决方法
May 29 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 #PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 #PHP
php处理带有中文URL的方法
Jul 11 #PHP
PHP实现JS中escape与unescape的方法
Jul 11 #PHP
php处理复杂xml数据示例
Jul 11 #PHP
php的debug相关函数用法示例
Jul 11 #PHP
php错误日志简单配置方法
Jul 11 #PHP
You might like
PHP生成器简单实例
2015/05/13 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
常用jQuery代码分享
2015/07/14 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
python常用知识梳理(必看篇)
2017/03/23 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
关于Keras Dense层整理
2020/05/21 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
房地产财务管理制度
2014/02/02 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
Elasticsearch 批量操作
2022/04/19 Python
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技