Magento 2 cung cấp các cách log file mặc định như: debug.log, exception.log và system.log. Tùy vào nhu cầu mà bạn có thể ghi data vào bất cứ file nào ở trên. Mục đích là để ghi lại các lỗi xảy ra hoặc các thông tin cần thiết. Bài viết này sẽ hướng dẫn các bạn tạo một custom log file trong Magento 2.
1. Log file mặc định
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php namespace Codextblog\Test\Block; class Test extends \Magento\Framework\View\Element\Template { protected $_logger; public function __construct( \Magento\Backend\Block\Template\Context $context, \Psr\Log\LoggerInterface $logger, array $data = [] ) { $this->_logger = $logger; parent::__construct($context, $data); } public function LogData() { // saved data in var/log/debug.log $this->_logger->debug('message goes here'); // saved data in var/log/system.log $this->_logger->info('message goes here'); } } |
Khi cửa hàng của bạn hoạt động, thì kích thước của các log file mặc đinh sẽ lớn lên theo từng ngày. Và việc module của bạn log lỗi vào các file mặc đinh sẽ dẫn đến khó khăn trong việc tìm kiếm lỗi và khó quản lý khi có lỗi xảy ra.
Và ý tưởng ở đây sẽ là log các dữ liệu cần thiết hoặc lỗi vào 1 custom log file để dễ dàng quản lý hơn.
2. Tạo custom logger trong Magento 2
ViMagento/CustomLogger/etc/di.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?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="ViMagento\CustomLogger\Logger\Handler"> <arguments> <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument> </arguments> </type> <type name="ViMagento\CustomLogger\Logger\Logger"> <arguments> <argument name="name" xsi:type="string">customLogger</argument> <argument name="handlers" xsi:type="array"> <item name="system" xsi:type="object">ViMagento\CustomLogger\Logger\Handler</item> </argument> </arguments> </type> </config> |
ViMagento\CustomLogger\Logger\Logger.php
1 2 3 4 5 6 7 8 |
<?php namespace ViMagento\CustomLogger\Logger; class Logger extends \Monolog\Logger { } |
ViMagento\CustomLogger\Logger\Handler.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php namespace ViMagento\CustomLogger\Logger; use Magento\Framework\Logger\Handler\Base; use Monolog\Logger; class Handler extends Base { protected $loggerType = Logger::INFO; protected $fileName = '/var/log/vimagento.log'; } |
Ở đây bạn có thể tùy ý đặt tên cho log file. Ở đây mình đặt là vimagento.log
3. Sử dụng custom logger trong Magento 2
Việc sử dụng custom logger cũng tương tự như việc sử dụng class của core vậy.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php namespace ViMagento\CustomLogger\Block; class Test extends \Magento\Framework\View\Element\Template { protected $_customLogger; public function __construct( \Magento\Backend\Block\Template\Context $context, \ViMagento\CustomLogger\Logger\Logger $customLogger, array $data = [] ) { $this->_customLogger = $customLogger; parent::__construct($context, $data); } public function LogData() { //Dữ liệu sẽ được ghi vào file vimagento.log $this->_customLogger->info('Message goes here'); } } |
Bài viết tham khảo: https://devdocs.magento.com/guides/v2.4/config-guide/log/custom-logger-handler.html