做PHP命令行工具开发别忘了写日志!不管你是菜鸟还是大佬,它都是个好帮手,帮你找bug、理清程序流程。那今天我们就来聊聊如何搞定这个事情。
使用内置的error_log函数
首先PHP有个error_log函数,它可是你的好帮手!只要告诉它要记录什么信息,它就能帮你存到电脑日志里面。比如想记录警告时,可以这样写:
php error_log("这是一个警告消息", 0);
“0”提醒你要在系统日志里加些东西。别慌,还有一步是设定消息的严重性,用E_USER_NOTICE或E_USER_WARNING等来表示,这样就知道重要性了。
指定日志级别常量以写入消息
说到日志级别,可得搞清楚啥时候选哪级。比如,E_USER_NOTICE就是小提示,E_USER_WARNING那可算是大告警。怎么决定?全凭个人喜好这边说比如想记录警告消息,这样记就对了:
警告:”这分明就是一则警告信息!”
这样做,你会发现消息有多么重要。接下来,你就按照这个标准去挑消息,只看你关心的内容就好!
使用第三方日志记录库
别说PHP自带的error_log不好用,赶紧找个救星!像Monolog和PSR-3这样的库就很给力。它们帮你解决日志格式,过滤器还有处理程序这些头疼事。安装后,你的项目就可以开始使用这些库记录日志了。比如用Monolog记录个消息,只需这么做:
use MonologLogger;
用下Monolog的流处理程序;
$log = new Logger(‘name’);
把日记导出来,随便啥地方都行,警告级别的就可以~
$log->warning(‘Foo’);
$log->error(‘Bar’);
这下子,你就可以简单地把要紧事儿记到对应的日记里面。这儿还有个好处就是,你可以设定提示的等级,比如说警告啥的,这样就能更精确地了解问题有多严重了
设置日志级别
记录命令行参数等信息以调试和分析
error_log("Error message");
记命令行参数有点麻烦不过学会用它们后,就算弄错了也能很快找到解决办法。比如说,要把某个命令行参数记住的话,就是这么干滴:
来,看看这个Command Line里的东西:error_log(print_r($argv,true)).
这些设定好的参数会被保存进系统日志里,你什么时候想看就可以瞅瞅,排查bug、解决问题更轻松!
确保工具具有写入系统日志的权限
说到权限这个东西,相对来说有点儿头晕脑胀。你想要能让你的小玩意儿正确记录日志的话,得先知道怎么给它设定合适的权限才行。假如说你希望你的小玩艺儿能够在系统日志上留下点信息,那么请看下面这个简单明了的操作指南~
给”path/to/your.log”这个日志文件设置下权限为777~
这个小助手,就是可以让你把它放进电脑里做记事提醒!如果你觉得范围不够,也可以随自己喜欢调大一些,比如变成0755或0777试试看,这样就更好掌控了~
改日志级别挺好玩的!不过记得看时间什么时候该怎么调,别搞得日志太多或是太卡哟。比如说,假如你想调试的话,那就这么干吧:
让报错提醒告诉你所有类型的出错消息,但千万别牵扯到那些你需不需要显式跳过的警告!
这下你想怎么调日志等级就是你说了算!你就把它调为E_ALL或E_ERROR这样子,想要记录什么重要信息就用什么级别。
实战案例:记录命令行参数
说到实战案例,这可是个大学问。“`php
实战案例:使用Monolog记录日志
学一下用Monolog把日志记下来,无论遇到啥都能很快找出问题在哪儿了。比如,你想记录个小信息,就这样:
实战案例:使用PSR-3记录日志
学会用PSR-3系统记日志,发现问题一准儿能找到症结所在。想用他来记录信息?就这么干:
error_reporting(E_ALL); // 记录所有错误 error_reporting(E_ERROR | E_PARSE); // 只记录错误和解析错误
use PsrLogLoggerInterface;
use PsrLogLogLevel;
大家好,我是MyLogger,其实就是个日志记录器!
咱们在函数里写log(级别,消息,背景信息)。
error_log($message, 0);
}
}
$logger = new MyLogger();
// 获取命令行参数 $args = getopt("s:f:"); // 记录参数值 error_log("Source file: " . $args['s']); error_log("Filter: " . $args['f']);
注意了这里要警告你一下!$logger->log(“这是个警告信息”);
这时候,你就可以往系统日志里添点料,告诉大家这个消息是啥程度的,比如说警告啦之类的。
说实话PHP命令行里面那个日志功能就是个小技巧。学会了就很轻松,不会的话可能会有点烦。希望你看完这篇文章就能掌握这个技能,好好调校下设置。有什么想法和感想要分享?
评论0