magento 2:你可以使用with`psr \ log \ loggerInterface`类型的插件吗?
-
13-12-2019 - |
题
我有一个di.xml,看起来像这个
<config>
<type name="Psr\Log\LoggerInterface">
<plugin name="namespace_modulename_plugins_psr"
type="Namespace\Modulename\Plugins\Psr"
sortOrder="10"
disabled="false"/>
</type>
</config>
.
可以实例化生成的Namespace\Modulename\Plugins\Psr
类,并且具有定义
public function beforeInfo($subject)
{
var_dump(__METHOD__);
exit;
}
.
但是,如果我注射记录器并尝试使用它
/* @var $psr `Psr\Log\LoggerInterface` */
$psr->info("This is a message");
.
消息将成功日志,但系统不调用我的插件方法。
是否有特殊的关于非插件能够的beforeInfo
?如果没有,有人对调试插件配置问题有没有固体方法?
解决方案 2
经过一系列的研究,它会发现Psr\Log\LoggerInterface
(及其底层混凝土生成的代码实现类) can 已插入。问题是,如果您拥有开发人员模式,则需要进行完整的DI编译(查看此错误)。运行
php bin/magento setup:di:compile
.
其他提示
PSR\Log\LoggerInterface
不在magento模块或框架文件夹中。因此,它未被编译器分析,并且不会在生产模式中插入。如果要打入/配置第三方类的行为,则应使用适配器。