php调试和日志记录函数
网站程序开发过程经常需要调试,发布阶段也需要记录运行日志,方便发现问题和还原事件。这就要求有调试和日志记录功能。
下面分别写了用于调试的函数和用于记录错误的函数。
使用方法很简单,且自动根据日期生成日志文件:
//调试时,多个参数都可以:
sysdebug("hello");
sysdebug("hello", "tiger is coming now");//错误记录也一样:
syserror("error");
syserror("error", "unfortunately tiger is dead ", "we are sad");
php调试和日志记录函数,如下:
/*** 记录调试信息*/
function sysdebug($msg) {if (defined("DEBUG_MODE")) {//TODO 检测调试开关,发布时不打印$params = func_get_args();$traces = debug_backtrace();$trace = array_pop($traces);sysrecord($params, $trace, 'debug');}
}/*** 记录错误信息*/
function syserror($msg) {$params = func_get_args();$traces = debug_backtrace();$trace = array_pop($traces);sysrecord($params, $trace, 'error');
}/*** 写文件* @ignore*/
function sysfile($filename, $msg, $mode = null) {$path = dirname($filename);if (!file_exists($path)) {mkdir($path, 0666, true);}$flag = LOCK_EX;if ($mode) {switch ($mode) {case "add":$flag = FILE_APPEND | LOCK_EX;break;case "a":$flag = FILE_APPEND | LOCK_EX;break;default:break;}}file_put_contents($filename, $msg, $flag);
}/*** 记录信息* @ignore*/
function sysrecord($params, $trace, $level) {$path = dirname(__FILE__) . "/logs/";//TODO 日志保存目录最好修改一下$file = $trace['file'];$func = $trace['function'];if ($func == "sys$level") {$func = '';}$filename = $path . "$level/" . date("Y-m-d") . '.log';$msg = "[" . date("m-d H:i:s") . "] File:\"" . basename($file) . "\" Func:\"" . $func . "\" Msg:" . json_encode($params) . "\r\n";sysfile($filename, $msg, 'add');
}
php调试和日志记录函数相关推荐
- php日志记录函数,php记录日志函数(DLOG)
直接上源码: 配置2个参数: 'DLOG_DIR'=>'./log/' ,//后台程序日志存放目录 'DLOG_LEVEL'=>array('debug','run','error','f ...
- keil debug如何在watch直接修改变量值_python日志记录系列教程,内置logging模块(一),直接使用logging模块的基础日志记录
前言:成熟的软件开发不可避免的要进行日志记录,python内置模块logging提供了强大的日志记录能力,本文将从多个角度,由浅入深的介绍logging的常见使用方法和一些基本概念,本此系列文章分为两 ...
- java log日志函数_Java 中的 AWS Lambda 函数日志记录 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异.要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门. 本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. Ja ...
- 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。
24-Jul-2022 17:18:15.259 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.s ...
- syslog(),closelog()与openlog()--日志操作函数
为了满足某些目的,进行日志记录是很有必要的. 在典型的 LINUX 安装中,/var/log/messages 包含所有的系统消息,/var/log/mail 包含来自邮件系统的其它日志消息, /va ...
- Python的日志记录-logging模块的使用
一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...
- python记录日志_5分钟内解释日志记录—使用Python演练
python记录日志 Making your code production-ready is not an easy task. There are so many things to consid ...
- Web API——添加Swagger、SQL Server、日志记录、导出到Excel和Docker
目录 介绍 要求 1.创建一个新的Web API项目 2.将Swagger添加到项目 3.将项目连接到SQL Server数据库 4.登录到SQL Server 5.添加"导出到Excel& ...
- python日志记录_Python日志记录
python日志记录 To start, logging is a way of tracking events in a program when it runs and is in executi ...
最新文章
- Python 23天 序列化
- c++ 纯虚函数和抽象类那些事(二)实现抽象类
- SAP Cloud for Customer(C4C)后台ABAP系统的System ID和client ID
- java 方法 示例_Java集合asLifoQueue()方法和示例
- B端出行,缺一个盒子汽车么?
- Leetcode 516.最长回文子序列
- [R语言绘图]饼状图pie
- Linux 常用命令学习-文件及文件夹操作相关命令-持续更新
- 中国最热门论坛-2011-11-[转]
- Python模块的下载与导入
- 匈牙利算法解决指派问题(java版)
- php留言板回复功能,php简单的留言板与回复功能具体实现_PHP教程
- 想要升级Big Sur 了?良心建议看看这个
- RFB-Net论文解读
- Python 解压压缩包至文件夹、把整个文件夹打包至压缩包
- 工业控制系统基础知识入门(一)
- 淘宝客CMS,微信公众号,微信淘客机器人
- 为什么有的人特别招蚊子?
- Qt创建线程两种方式的区别
- sublime text3 镜像下载_Sublime Text 3
热门文章
- Vue项目不兼容IE浏览器问题
- 精灵盛典服务器最多,精灵盛典黎明精灵新生824服开服时间表_精灵盛典黎明新区开服预告_第一手游网手游开服表...
- 实习打杂记录,xboot中使已上传文件能够下载。
- Java企业级开发框架(三):changelog——1.2.0-SNAPSHOT
- java中使用模板设计模式
- MyBatisPlus 中常用的 条件构造器(LambdaQueryWrapper、LambdaUpdateWrapper)使用
- c语言的按位或,与,非运算符
- 新国风纹理IPAD笔刷,真的是宝藏,添加后瞬间过稿了
- 位与、位或、异或、位移运算
- 触摸屏驱动三部曲之硬件原理