Pregunta

Tengo un di.xml que se parece a esto

<config>
<type name="Psr\Log\LoggerInterface">                
    <plugin name="namespace_modulename_plugins_psr"
            type="Namespace\Modulename\Plugins\Psr"
            sortOrder="10"
            disabled="false"/>     
</type>
</config>

El Namespace\Modulename\Plugins\Psr La clase puede ser instanciada y tiene un beforeInfo método definido

public function beforeInfo($subject)
{
    var_dump(__METHOD__);
    exit;
}

Sin embargo, si inyecto un registrador e intento usarlo

/* @var $psr `Psr\Log\LoggerInterface` */
$psr->info("This is a message");

El mensaje se registrará correctamente, pero el sistema no llama a mi método de complemento.

¿Hay algo especial en el Psr\Log\LoggerInterface ¿Eso hace que no sea compatible con complementos?Si no es así, ¿alguien tiene una metodología sólida para depurar problemas de configuración de complementos?

¿Fue útil?

Solución 2

Después de un poco de investigación, resulta que Psr\Log\LoggerInterface (y sus fundamentos concretos Monolog clase de implementación) poder estar enchufado.El problema era que, si tenía habilitado el modo desarrollador, necesitaba realizar una compilación completa (ver este error).Correr

php bin/magento setup:di:compile

Debería generarse los interceptores y funcionar los complementos.

Otros consejos

PSR\Log\LoggerInterface no está en el módulo magento o en la carpeta framework.Por lo tanto, el compilador no lo analiza y no se agregará en el modo de producción.Si desea complementar/configurar el comportamiento de clases de terceros, debe usar el adaptador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top