📅  最后修改于: 2023-12-03 15:17:29.613000             🧑  作者: Mango
在 Magento 2 中,自定义日志记录是非常有用的。它允许开发人员记录任何信息,以便更轻松地调试问题和诊断错误。以下是如何在 Magento 2 中进行自定义日志记录的简单步骤。
首先,我们需要创建一个自定义的 Logger 类。在 Magento 2 中,Psr\Log\LoggerInterface
接口定义了所有日志方法,如 debug()
, info()
, warning()
, error()
, and critical()
. 你可以根据你的需求选择使用这些方法中的任何一个。
namespace Vendor\Module\Logger;
use Psr\Log\LoggerInterface;
class CustomLogger implements LoggerInterface
{
protected $loggerType;
protected $logFileName = '/var/log/custom.log';
protected $logger;
public function __construct($loggerType = null)
{
$this->loggerType = $loggerType;
$this->logger = null;
}
protected function setLogger($loggerType)
{
$this->loggerType = $loggerType;
$this->logger = null;
$this->logger = \Magento\Framework\App\ObjectManager::getInstance()
->get(\Psr\Log\LoggerInterface::class);
}
protected function getLogger()
{
if (null === $this->logger) {
$this->setLogger($this->loggerType);
}
return $this->logger;
}
public function debug($message, array $context = array())
{
$this->getLogger()->debug($message, $context);
}
public function info($message, array $context = array())
{
$this->getLogger()->info($message, $context);
}
public function notice($message, array $context = array())
{
$this->getLogger()->notice($message, $context);
}
public function warning($message, array $context = array())
{
$this->getLogger()->warning($message, $context);
}
public function error($message, array $context = array())
{
$this->getLogger()->error($message, $context);
}
public function critical($message, array $context = array())
{
$this->getLogger()->critical($message, $context);
}
public function alert($message, array $context = array())
{
$this->getLogger()->alert($message, $context);
}
public function emergency($message, array $context = array())
{
$this->getLogger()->emergency($message, $context);
}
}
你需要将自定义 logger 添加到 DI 文件中。
<type name="Vendor\Module\Logger\CustomLogger">
<arguments>
<argument name="loggerType" xsi:type="string">Vendor_Module</argument>
</arguments>
</type>
这段代码需要添加到 app/code/Vendor/Module/etc/di.xml
文件中。
你可以在你的代码中轻松地使用自定义日志记录器。
namespace Vendor\Module\Controller\Index;
use Magento\Framework\App\Action\Context;
use Vendor\Module\Logger\CustomLogger;
class Index extends \Magento\Framework\App\Action\Action
{
protected $logger;
public function __construct(Context $context, CustomLogger $logger)
{
$this->logger = $logger;
parent::__construct($context);
}
public function execute()
{
$this->logger->info('My Custom Logger Worked!!');
// your code here
}
}
这将记录 “My Custom Logger Worked!!” 字符串到 /var/log/custom.log
文件中。
自定义日志记录器是 Magento 2 中非常实用的一项功能,在调试问题和诊断错误时能够大大地提高开发人员的效率。在本文中,我们介绍了如何创建自定义的 Logger 类,将其添加到 DI 文件中并在代码中使用。现在,你可以开始轻松地记录自定义日志了!