浏览文章
文章信息
日志记录是每个开发过程的重要组成部分。日志可洞察Magento 2的系统进程,是跟踪错误,重大事件,异常等的好工具。为了使Magento 2正确实现日志记录库,它必须符合PSR-3标准。 Magento 2随附基于Monolog库的内置日志记录解决方案,本文将对此进行进一步分析。 Magento 2的主要日志类是“ Magento \ Framework \ Logger \ Monolog”,并在“ MAGENTO2_ROOT / app / etc / di.xml”中定义
如前所述,Monolog是一个功能强大的日志记录工具,它允许用户使用各种处理程序以从中受益,例如,记录到文件和syslog,发送警报和电子邮件,记录数据库活动等。 Logger类具有8个级别的日志和每个级别的方法,这些方法的使用取决于用户正在记录的消息的类型。 每个方法都接受2个参数,第一个是消息本身(字符串),第二个是可选数组(例如Exception对象的实例) $this->_logger-> emergency($message, array $context = array()); //saved in var/log/system.log $this->_logger-> alert($message, array $context = array()) //saved in var/log/system.log $this->_logger-> critical($message, array $context = array()) //saved in var/log/system.log $this->_logger-> error($message, array $context = array()) //saved in var/log/system.log $this->_logger-> warning($message, array $context = array()) //saved in var/log/system.log $this->_logger-> notice($message, array $context = array()) //saved in var/log/system.log $this->_logger-> info($message, array $context = array()) //saved in var/log/system.log $this->_logger-> debug($message, array $context = array()) //saved in var/log/debug.log (does not work in production mode) 还有另一种方法可以 用来记录以任意级别作为第一个参数传递的内容 $this->_logger-> log($level, $message, array $context = array()) 无论使用哪种日志级别,所有异常均保存在var / log / exception.log中 使用记录器类 Magento 2使用依赖注入,因此为了在我们的类中使用logger,我们必须在我们的类构造函数中传递它。 这是一个如何在自定义类中使用logger记录异常的示例。 class Example { private $logger; public function __construct(\Psr\Log\LoggerInterface $logger) { $this->logger = $logger; } public function exampleMethod() { try { //do something } catch (\Exception $e) { $this->logger->critical('Error message', ['exception' => $e]); } } } 请注意,我们在构造函数中传递了\ Psr \ Log \ LoggerInterface,如开头所述,LoggerInterface的首选项在di.xml中设置为Monolog类。 在某些情况下,没有必要在构造函数中传递记录器,因为 “ Magento \ Framework \ View \ Element \ Template”和“ Magento \ Framework \ Model \ AbstractModel”之类的某些类已经具有$ _logger属性,因此,如果扩展这些类之一记录器已经可用。 调试日志 默认情况下,Magento仅在默认和开发模式下写入调试日志,而不在生产模式下写入。 要在默认和开发模式下更改默认值,可以使用以下命令: 1. bin / magento setup:config:set –enable-debug-logging = true | false 2. bin / magento缓存:刷新 数据库记录 Magento 2的另一个强大功能是记录数据库活动。默认情况下,数据库日志保存在var / debug / db.log中。强烈建议使用数据库日志记录,因为它允许我们跟踪所有数据库查询并可以帮助我们发现性能瓶颈。 使用以下命令来启用/禁用数据库日志记录: 1. bin / magento dev:query-log:enable | disable 2. bin / magento缓存:刷新 Cron记录 从Magento 2.3.1版本开始,cron日志的功能更加广泛,现在记录在var / log / cron.log中,而不是var / log / system.log中 这些是Magento 2日志记录的基础。即使Magento 2默认情况下使用Monolog记录器,只要它符合PSR-3标准,就可以通过设置LoggerInterface的首选项来使用其他记录解决方案。 关于日志记录,还有许多其他可能性,例如为自定义日志文件创建自定义处理程序,发送包含日志数据的电子邮件,将日志记录发送到Slack帐户等。 如果您觉得需要更多帮助,我们可以根据我们的技术审核为您提供详细的自定义报告 -随时联系我们,了解我们能为您做些什么!