菜鸟常忽略的基础 - 自定义日志处理器 ¶
作者:KK
发表日期:2016.9.15
通常我们都是用文件记录日志,所以我这里就以自定义记录文件日志为例子好了
定义日志处理器 ¶
这个处理器官方称为Target,日志目标,虽然概念很不错但是我觉得对于普通程序员不够通俗
好吧反正咱先定义一个类继承yii\log\Target
,并实现public function export()
这个方法:
namespace app\ext; //实际的命名空间自己决定
class MyLogTarget extends \yii\log\Target{
public function export(){
$messagesContent = var_export($this->messages, true);
$messagesNums = count($this->messages);
$logContent = <<<EOL
消息数量:$messagesNums
收到的消息列表:$messagesContent
EOL;
$logFile = \Yii::getAlias('@runtime/logs/my-log-target.log');
file_put_contents($logFile, $logContent);
}
}
就这么完成一个简单的自定义文件日志记录器了
配置 ¶
'log' => [ //log组件
'targets' => [
[
'class' => 'app\ext\MyLogTarget',
'levels' => ['error'],
],
],
],
测试 ¶
基本上在控制器、模型或者视图等地方随便执行Yii::error('test')
就能产生一个error级别的消息,PHP脚本运行结束后,自定义日志处理器就会收集到这个消息了