【发布时间】:2016-03-20 22:21:52
【问题描述】:
我正在开发我的第一个基于 Symfony 的 WebApp 项目。我已将 Symfony 配置为不仅将日志消息写入不同的日志文件,而且还可以立即将严重错误消息作为电子邮件发送。这工作正常。不过,我想在默认日志消息中添加一些附加信息,以便更轻松地找到实际的错误源。
示例:
一页的 Twig 文件从 .yml 文件加载本地化文本。文本包含一个%about_link%placeholder,应替换为“关于”页面的路由/URL。我忘记了这个替换,所以链接没有指向 URL,而是指向 %about_link%。这会导致NotFoundHttpException,因为找不到到%about_link% 的路由...
没什么大不了的。但是要找到包含此错误的实际页面/控制器有点棘手。默认日志消息显示如下:
[2015-12-14 17:19:36] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /%25about_link%25"" at /long/path/to/symfony/.../RouterListener.php line 176 []
因此,在尝试查找到%about_link% 的路由时,RouterListener.php 中引发了异常。好的,这并没有给我任何关于这个坏链接位于哪个页面的提示。
当然,对坏路由的调用根本不必位于任何页面上。用户可能直接输入了错误链接。 Symfony 必须存储/记住最后一页以提供有关可能来源的任何提示。那么,是否有可能包含这些信息?
此外,我想添加有关报告问题的主机的信息。我正在运行 WebApp 的两个实例:www.my_web_app.xy 和 betatest.my_web_app.xy,如果日志消息显示它是来自 www 还是来自 betatest,这将是一个很大的帮助。
将此信息添加到我自己创建的日志消息中没有问题,但是如何将此信息添加到由 Symfony 或第三方代码生成的消息中?在它到达日志处理程序之前,我必须以某种方式拦截日志消息。这可能吗?
【问题讨论】:
标签: php symfony logging monolog