Php Symfony独白';在FingersCrossAndler Q&;之后的s内省处理器日志记录;A.
在monolog的fingers_Cross处理程序中,日志记录被保留,直到某个级别触发卸载/显示所有保留记录的日志记录。到目前为止,一切顺利 当这些被保留的消息在手指交叉触发后被转储时,您现在可能真的想知道所有的源代码行。(而不是在祈祷之前)。为此,将使用内省处理器——但是,正如其创建者指定的:“警告:只有处理程序直接处理日志时,这才有效。例如,如果将处理器放在FingerScrossHandler后面的处理程序上,则仅当达到触发器级别时才会调用处理器,并且所有日志记录都将具有相同的文件/行/。。来自触发FingerScrossHandler的呼叫的数据。“-不好!” 该问题是针对“Laravel 5”类似问题提出的,没有令人满意的答案。在这里,我提出了一个有效的Symfony(2/3)解决方案 src/AppBundle/IntrospectionPreprocessor.php:Php Symfony独白';在FingersCrossAndler Q&;之后的s内省处理器日志记录;A.,php,symfony,monolog,Php,Symfony,Monolog,在monolog的fingers_Cross处理程序中,日志记录被保留,直到某个级别触发卸载/显示所有保留记录的日志记录。到目前为止,一切顺利 当这些被保留的消息在手指交叉触发后被转储时,您现在可能真的想知道所有的源代码行。(而不是在祈祷之前)。为此,将使用内省处理器——但是,正如其创建者指定的:“警告:只有处理程序直接处理日志时,这才有效。例如,如果将处理器放在FingerScrossHandler后面的处理程序上,则仅当达到触发器级别时才会调用处理器,并且所有日志记录都将具有相同的文件/行/
<?php
namespace AppBundle;
class IntrospectionPreprocessor // ATTENTION TO THE 'PRE'
extends \Monolog\Processor\IntrospectionProcessor // SO USE THE ORIGINAL CLASS
{
public function processRecord(array $record)
{
return $this( $record ); // CALL TO ITS __INVOKE(..)
}
}
在手指交叉触发后续处理程序后,现在插入正确的文件/行/类/函数信息
问:有没有办法让它成为我的Symfony框架的一部分,因此不在我的应用程序区域(AppBundle)中,但不涉及Symfony代码(例如,升级时丢失?)
services:
monolog.processor.introspection_patch:
class: AppBundle\IntrospectionPreprocessor
arguments: [ DEBUG, [Helper, Google] ] # FILTER OUT CLASSES THAT CONTAIN [..], similar to IntrospectionProcessor
tags:
- { name: monolog.processor, method: processRecord }