Yii2解析记录器消息

时间:2019-03-27 22:33:07

标签: yii2 yii2-log

我想获取记录器消息,并以人类可读的格式解析它们以获取电子邮件更新。

我当前正在使用记录器并将数据记录到数据库中,并通过

接收电子邮件
Yii::info('test log','dashboard') 

方法。

我在配置文件中的2个类分别是EmailTarget和DbTarget,它们的类别都设置为“仪表板”,级别设置为“信息”。

就将数据导入2个目标而言,一切都很好。

DB每个触发器有2个条目。首先是上面的“测试日志”消息。我最感兴趣的第二个条目包含所有好的数据,例如_GET,_POST和_SERVER等。

我尝试了几种不同的方式来获取数据。

触发后

Yii::info(...) 

在其中一个控制器中,过程称为主页面

Yii::getLogger()->messages

我从引导程序中获取的数据似乎与所有SQL启动查询一样。没有VARS或“测试日志”

然后我尝试直接拨打电话

Yii::getLogger()->log('test log',0,'dashboard');

但是随后我什么也没得到

Yii::getLogger()->messages 

仍然提供启动数据。

我确实进入了DbTarget类并显示了我所需的VARS,只是不确定到这一点的路径,我讨厌修改该类。

我曾考虑过创建一个自定义目标,但是在阅读了大约1段长的内容后,我不确定该怎么做。

我只是不确定如何1.创建自定义目标或2.如何拦截VARS消息。我猜是因为文档说VARS是在内部处理的。

我希望一切都有意义。

任何朝着正确方向前进的人都会受到赞赏。

谢谢 斯科蒂

1 个答案:

答案 0 :(得分:1)

您应该编写自己的日志目标。使用Yii::getLogger()->messages是不可靠的,因为在每次Logger::log()之后,呼叫消息可能会flushed发送给调度程序,因此Logger::$messages将为空数组。根据记录器的配置,它可能在每次log()调用之后发生,因此messages将始终为空。

另请参阅Logger::$flushInterval文档。