Domanda

Ho un di.xml che assomiglia a questo

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

IL Namespace\Modulename\Plugins\Psr la classe può essere istanziata e ha un file beforeInfo metodo definito

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

Tuttavia, se inserisco un logger e provo a usarlo

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

Il messaggio verrà registrato correttamente, ma il sistema non chiama il mio metodo plugin.

C'è qualcosa di speciale in Psr\Log\LoggerInterface che rende non plug-in in grado?In caso contrario, qualcuno dispone di una solida metodologia per il debug dei problemi di configurazione del plug-in?

È stato utile?

Soluzione 2

Dopo un po' di ricerca, si scopre che Psr\Log\LoggerInterface (e il suo cemento sottostante Monolog classe di implementazione) Potere essere collegato.Il problema era che, se hai abilitato la modalità sviluppatore, devi eseguire una compilazione completa (vedi questo bug).Corsa

php bin/magento setup:di:compile

dovrebbe generare gli intercettori e far funzionare i plugin.

Altri suggerimenti

PSR\Log\LoggerInterface non è in Modulo Magento o Cartella quadro.Quindi non è analizzato dal compilatore e non verrà pluginizzato in modalità di produzione.Se si desidera inserire / configurare il comportamento delle classi di terze parti, è necessario utilizzare l'adattatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top