📜  magento 2 自定义日志记录 (1)

📅  最后修改于: 2023-12-03 15:17:29.613000             🧑  作者: Mango

Magento 2 自定义日志记录

在 Magento 2 中,自定义日志记录是非常有用的。它允许开发人员记录任何信息,以便更轻松地调试问题和诊断错误。以下是如何在 Magento 2 中进行自定义日志记录的简单步骤。

步骤 1:创建自定义 Logger 类

首先,我们需要创建一个自定义的 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);
    }
}
步骤 2: 在 DI 中定义自定义 Logger

你需要将自定义 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 文件中。

步骤 3: 记录日志

你可以在你的代码中轻松地使用自定义日志记录器。

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 文件中并在代码中使用。现在,你可以开始轻松地记录自定义日志了!