PHP打印输出log
须知
- 该打印log的代码出自wxPay支付样例里的 log.php 文件
- 使用该文件时,直接引入即可, 但是需要在同级目录下手动创建logs文件夹
使用样例
require_once "log.php"Log::INFO("使用打印日志");
源码
<?phpinterface ILogHandler
{public function write($msg);}class CLogFileHandler implements ILogHandler
{private $handle = null;public function __construct($file = ''){$this->handle = fopen($file, 'a');}public function write($msg){fwrite($this->handle, $msg, 4096);}public function __destruct(){fclose($this->handle);}
}class Log
{private $handler = null;private $level = 15;private static $instance = null;private function __construct(){}private function __clone(){}public static function Init($handler = null, $level = 15){if (!self::$instance instanceof self) {self::$instance = new self();self::$instance->__setHandle($handler);self::$instance->__setLevel($level);}return self::$instance;}private function __setHandle($handler){$this->handler = $handler;}private function __setLevel($level){$this->level = $level;}public static function DEBUG($msg){self::$instance->write(1, $msg);}public static function WARN($msg){self::$instance->write(4, $msg);}public static function ERROR($msg){$debugInfo = debug_backtrace();$stack = "[";foreach ($debugInfo as $key => $val) {if (array_key_exists("file", $val)) {$stack .= ",file:" . $val["file"];}if (array_key_exists("line", $val)) {$stack .= ",line:" . $val["line"];}if (array_key_exists("function", $val)) {$stack .= ",function:" . $val["function"];}}$stack .= "]";self::$instance->write(8, $stack . $msg);}public static function INFO($msg){self::$instance->write(2, $msg);}private function getLevelStr($level){switch ($level) {case 1:return 'debug';break;case 2:return 'info';break;case 4:return 'warn';break;case 8:return 'error';break;default:break;}}protected function write($level, $msg){if (($level & $this->level) == $level) {$msg = '[' . date('Y-m-d H:i:s') . '][' . $this->getLevelStr($level) . '] ' . $msg . "\n";$this->handler->write($msg);}}
}//初始化日志
$logHandler = new CLogFileHandler("logs/" . date('Y-m-d') . '.log');
$log = Log::Init($logHandler, 15);
PHP打印输出log相关推荐
- 如何分析Android的Log
转载自 http://www.2cto.com/kf/201405/297264.html 首先,让我们看一看AndroidLog的格式.下面这段log是以所谓的long格式打印出来的.从前面Logc ...
- 飞桨上线万能转换小工具,教你玩转TensorFlow、Caffe等模型迁移
百度推出飞桨(PaddlePaddle)后,不少开发者开始转向国内的深度学习框架.但是从代码的转移谈何容易,之前的工作重写一遍不太现实,成千上万行代码的手工转换等于是在做一次二次开发. 现在,有个好消 ...
- 从零开始学习docker(十二)介绍Docker Compose基本使用
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 默认情况下在mac或者Windows安装docker的时候会自动安装docker-compose.对于Linux ...
- Android代码模拟物理、屏幕点击事件
一.应用中模拟物理和屏幕点击事件 例如,模拟对某个view的点击事件 private void simulateClick(View view, float x, float y) {long dow ...
- python3中超级好用的日志模块-loguru模块详解
一. 使用logging模块时 用python写代码时,logging模块最基本的几行配置,如下: import logging logging.basicConfig(level=logging.I ...
- 飞桨万能转换小工具X2Paddle,教你玩转模型迁移
百度推出飞桨(PaddlePaddle)后,不少开发者开始转向国内的深度学习框架.但是从代码的转移谈何容易,之前的工作重写一遍不太现实,成千上万行代码的手工转换等于是在做一次二次开发. 现在,有个好消 ...
- 在mm32f3270为micropython创建Pin模块(1)
在mm32f3270为micropython创建Pin模块(1) 苏勇,2021年8月 文章目录 在mm32f3270为micropython创建Pin模块(1) Requirements 代码框架 ...
- 精品连载丨安卓 App 逆向课程之五 frida 注入 Okhttp 抓包下篇
本篇内容是「肉丝姐教你安卓逆向之 frida 注入 Okhttp 抓包系列的第三篇,建议配合前两篇一起阅读,效果更佳. 精品连载丨安卓 App 逆向课程之三 frida 注入 Okhttp 抓包上篇 ...
- Redisson_布隆过滤器
应用场景 去重 诞生背景 Java应用一般通过JDK自身提供的HashSet去重,通过contains()方法判断当前元素是否存在于Set中.该方式要求在调用contains()前,已经将数据列表加载 ...
最新文章
- 从网站上扒网页,保存为file文件格式
- 每日一皮:当我在处理别人的代码时...
- 吉林大学计算机学院男女,吉林大学非诚勿扰千人观看 22位男女同学一同相亲...
- keras 时间序列分析
- 协方差矩阵的概念,算法以及自己的一些理解
- php mysql ajax 分页_ajax+php+mysql无刷新分页代码(1/2)_PHP教程
- 爬虫必须学会的正则表达式
- MaxEnt: 最大熵模型(Maximum Entropy Models)(二)
- F5获取vs、pool、member当前、峰值、总计连接数的oid
- ae万能弹性表达式_干货丨AE表达式知多少?4大常用表示式解决80%难题
- 瑞星杀毒软件linux序列号,瑞星杀毒软件2007光盘零售版是面向 Linux的?
- Ubuntu以及CentOS7修改ssh端口号详细步骤
- 一个Vue+Canvas的酷炫后台管理
- coco2d-x 或者 creator 实现物体点击后的果冻效果
- keychron机械键盘使用感受
- shell sed(流编辑器)的基本使用
- DNS查询的命令行工具
- 3D步进式全景漫游解决方案,虚拟全景解决方案,一步一景全景解决方案
- 4.6Android灯光系统-背光灯
- iSpring Suite教程:使用iSpring创建视频讲座只需简单6步
热门文章
- mysql 视图报错1356,mysql视图初探 - osc_ky6f5kf1的个人空间 - OSCHINA - 中文开源技术交流社区...
- JavaScript 判断对象中属性的值是否空,如果为空,则删除该属性
- 浏览器内核Gecko与WebKit哪个性能更强大
- java对象与byte[]数组之间的相互转化,压缩解压缩操作
- winds_mysql8.0安装方法
- 计算机芯片记忆方法,神奇的万能记忆芯片作文
- 完美迁移C盘已装软件与游戏,无需重新安装~
- 开发中遇到的bug-Property or method “xxxx“ is not defined on the instance but referenced during render.
- 微软的应试题完整版(附答案)
- 【转载】CMD命令大全