菜鸟常忽略的基础 - 自定义日志处理器

  • 作者: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脚本运行结束后,自定义日志处理器就会收集到这个消息了