网站程序开发过程经常需要调试,发布阶段也需要记录运行日志,方便发现问题和还原事件。这就要求有调试和日志记录功能。

下面分别写了用于调试的函数和用于记录错误的函数。

使用方法很简单,且自动根据日期生成日志文件:

//调试时,多个参数都可以:
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调试和日志记录函数相关推荐

  1. php日志记录函数,php记录日志函数(DLOG)

    直接上源码: 配置2个参数: 'DLOG_DIR'=>'./log/' ,//后台程序日志存放目录 'DLOG_LEVEL'=>array('debug','run','error','f ...

  2. keil debug如何在watch直接修改变量值_python日志记录系列教程,内置logging模块(一),直接使用logging模块的基础日志记录

    前言:成熟的软件开发不可避免的要进行日志记录,python内置模块logging提供了强大的日志记录能力,本文将从多个角度,由浅入深的介绍logging的常见使用方法和一些基本概念,本此系列文章分为两 ...

  3. java log日志函数_Java 中的 AWS Lambda 函数日志记录 - AWS Lambda

    AWS 文档中描述的 AWS 服务或功能可能因区域而异.要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门. 本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. Ja ...

  4. 至少有一个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 ...

  5. syslog(),closelog()与openlog()--日志操作函数

    为了满足某些目的,进行日志记录是很有必要的. 在典型的 LINUX 安装中,/var/log/messages 包含所有的系统消息,/var/log/mail 包含来自邮件系统的其它日志消息, /va ...

  6. Python的日志记录-logging模块的使用

    一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...

  7. python记录日志_5分钟内解释日志记录—使用Python演练

    python记录日志 Making your code production-ready is not an easy task. There are so many things to consid ...

  8. Web API——添加Swagger、SQL Server、日志记录、导出到Excel和Docker

    目录 介绍 要求 1.创建一个新的Web API项目 2.将Swagger添加到项目 3.将项目连接到SQL Server数据库 4.登录到SQL Server 5.添加"导出到Excel& ...

  9. python日志记录_Python日志记录

    python日志记录 To start, logging is a way of tracking events in a program when it runs and is in executi ...

最新文章

  1. Python 23天 序列化
  2. c++ 纯虚函数和抽象类那些事(二)实现抽象类
  3. SAP Cloud for Customer(C4C)后台ABAP系统的System ID和client ID
  4. java 方法 示例_Java集合asLifoQueue()方法和示例
  5. B端出行,缺一个盒子汽车么?
  6. Leetcode 516.最长回文子序列
  7. [R语言绘图]饼状图pie
  8. Linux 常用命令学习-文件及文件夹操作相关命令-持续更新
  9. 中国最热门论坛-2011-11-[转]
  10. Python模块的下载与导入
  11. 匈牙利算法解决指派问题(java版)
  12. php留言板回复功能,php简单的留言板与回复功能具体实现_PHP教程
  13. 想要升级Big Sur 了?良心建议看看这个
  14. RFB-Net论文解读
  15. Python 解压压缩包至文件夹、把整个文件夹打包至压缩包
  16. 工业控制系统基础知识入门(一)
  17. 淘宝客CMS,微信公众号,微信淘客机器人
  18. 为什么有的人特别招蚊子?
  19. Qt创建线程两种方式的区别
  20. sublime text3 镜像下载_Sublime Text 3

热门文章

  1. Vue项目不兼容IE浏览器问题
  2. 精灵盛典服务器最多,精灵盛典黎明精灵新生824服开服时间表_精灵盛典黎明新区开服预告_第一手游网手游开服表...
  3. 实习打杂记录,xboot中使已上传文件能够下载。
  4. Java企业级开发框架(三):changelog——1.2.0-SNAPSHOT
  5. java中使用模板设计模式
  6. MyBatisPlus 中常用的 条件构造器(LambdaQueryWrapper、LambdaUpdateWrapper)使用
  7. c语言的按位或,与,非运算符
  8. 新国风纹理IPAD笔刷,真的是宝藏,添加后瞬间过稿了
  9. 位与、位或、异或、位移运算
  10. 触摸屏驱动三部曲之硬件原理