📜  mage log 等效 magento 2 - PHP (1)

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

Magento 2中的日志记录功能

在Magento 2中,为了协助开发人员进行调试和捕获潜在的错误,Magento提供了一个内置的日志记录功能。日志记录非常重要,特别是在生产环境中,因为它可以帮助解决许多常见的问题,并且具有可重复性和持久性。以下是如何在Magento 2中使用日志记录功能的详细说明。

创建日志记录器(Create a logger)

在Magento 2中要创建一个日志记录器,可以使用Magento \ Framework \ Logger \ Monolog类。在页面或块中的构造函数中,可以将此类注入到构造函数中。

namespace Vendor\Module\Controller;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\Logger\Monolog;

class Test extends Action
{
    protected $_logger;

    public function __construct(
        Context $context,
        ScopeConfigInterface $scopeConfig,
        Monolog $logger
    ) {
        $this->_logger = $logger;
        parent::__construct($context);
    }
}
记录日志信息(Logging Messages)

在上面的示例中,已经创建了一个日志记录器$ logger。使用以下代码记录日志消息:

$this->_logger->debug('Debug Message');
$this->_logger->info('Info Message');
$this->_logger->notice('Notice Message');
$this->_logger->warning('Warning Message');
$this->_logger->error('Error Message');
$this->_logger->critical('Critical Message');
日志记录的级别(Log levels)

在最近的示例中,出现了6个日志记录的级别。您可以根据需要选择相关的级别。

以下是每个级别的概述:

  • DEBUG:这是最低的日志记录级别,适用于最详细的日志信息,标记为红色。

  • INFO:适用于更详细的日志记录,标记为绿色。

  • NOTICE:用于注释低级别警告,标记为黄色。

  • WARNING:警告记录级别,标记为黄色。

  • ERROR:错误级别,标记为红色。

  • CRITICAL:严重错误级别,标记为红色。

日志记录对象的上下文(Logging Objects Context)

在记录日志信息时,还可以将对象的上下文传递给日志记录器,以便在日志消息中获得有关执行操作的更多信息。

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('\Magento\Catalog\Model\Product')->load(1);
$this->_logger->info('Product Info', ['product' => $product->debug()]);
配置日志记录(Configure Logging)

可以通过以下方式在Magento 2中配置日志记录:

  • 通过Magneto后台设置设置参数,即Stores -> Configuration -> Advanced -> Developer -> Debug Logging.
  • 配置文件:app / code / Vendor / Module / etc / di.xml 和 app / code / Vendor / Module / etc / log.xml.

app / code / Vendor / Module / etc / di.xml 如下所示:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
   <type name="Magento\Framework\Logger\Monolog">
         <arguments>
            <argument name="name" xsi:type="string">custom_logger</argument>
            <argument name="handlers" xsi:type="array">
               <item name="system" xsi:type="object">Magento\Framework\Logger\Handler\System</item>
               <item name="debug" xsi:type="object">Magento\Framework\Logger\Handler\Debug</item>
            </argument>
         </arguments>
   </type>
</config>

app / code / Vendor / Module / etc / log.xml 如下所示:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Log/etc/log.xsd">
   <framework>
      <logger>
         <handlers>
            <handler name="debug">
               <type>stream</type>
               <path>/var/log/custom.log</path>
               <level>DEBUG</level>
            </handler>
         </handlers>
      </logger>
   </framework>
</config>
总结

作为Magento 2开发人员,了解如何在Magento 2中记录日志信息是至关重要的。这个内置的日志记录功能,可以很好地帮助我们调试并捕获潜在的错误。我们可以使用Magento \ Framework \ Logger \ Monolog类创建日志记录器,并使用不同的级别记录日志消息,以及将对象的上下文传递给日志记录器。我们可以使用后台设置或配置文件进行日志记录的配置。