我想获取记录器消息,并以人类可读的格式解析它们以获取电子邮件更新。
我当前正在使用记录器并将数据记录到数据库中,并通过
接收电子邮件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是在内部处理的。
我希望一切都有意义。
任何朝着正确方向前进的人都会受到赞赏。
谢谢 斯科蒂
答案 0 :(得分:1)
您应该编写自己的日志目标。使用Yii::getLogger()->messages
是不可靠的,因为在每次Logger::log()
之后,呼叫消息可能会flushed发送给调度程序,因此Logger::$messages
将为空数组。根据记录器的配置,它可能在每次log()
调用之后发生,因此messages
将始终为空。
另请参阅Logger::$flushInterval
文档。