Magento 2:¿Puedes utilizar un complemento con el tipo `Psr\Log\LoggerInterface`?
-
13-12-2019 - |
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?
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.