Magento 2 logging: Tổng quan và hướng dẫn cài đặt chi tiết

Logging là một phần quan trọng của mọi quá trình phát triển. Nhật ký cung cấp các insights về các quy trình hệ thống của Magento 2 và là một công cụ tuyệt vời để theo dõi lỗi, các sự kiện quan trọng và nhiều hơn nữa. Để thư viện ghi nhật ký có thể vận hành với Magento 2, nó phải tương thích với các tiêu chuẩn PSR-3. Magento 2 logging ra mắt cùng với giải pháp ghi nhật ký tích hợp dựa trên Thư viện Monolog, và sẽ được phân tích kỹ hơn trong bài viết này.

Magento 2 logging

Log class chính của Magento 2 là “Magento\Framework\Logger\Monolog” và được định dạng trong “MAGENTO2_ROOT/app/etc/di.xml”.

<preference for=”Psr\Log\LoggerInterface” type=”Magento\Framework\Logger\Monolog”>

Như đã đề cập trước đây, Monolog là một công cụ ghi nhật ký cho phép người dùng sử dụng một loạt các trình xử lý có lợi cho họ, chẳng hạn như đăng nhập vào tệp và nhật ký hệ thống, gửi thông báo và email, ghi nhật ký hoạt động cơ sở dữ liệu, v.v.

Logger class có 8 cấp độ log kèm phương thức tương ứng cho mỗi cấp độ đó, việc sử dụng các phương thức này phụ thuộc vào loại thông điệp mà người dùng đang sử dụng.

Magento 2 logging

Mỗi phương thức này chấp nhận 2 đối số, đầu tiên là chính thông điệp (chuỗi) và phương thức thứ hai là một mảng tùy chọn (ví dụ: đối tượng 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)

Có một phương pháp khác có thể được sử dụng để logging một cái gì đó với mức tùy ý với vai trò tham số đầu tiên.

$this->_logger-> log($level, $message, array $context = array())

Tất cả các ngoại lệ, bất kể là mức độ nhật ký nào được sử dụng, đều được lưu trong var/log/exception.log

>>>> Xem thêm: 8 Bước cài đặt chi tiết Google Shopping Feed Magento 2

Sử dụng logger class

Magento 2 sử dụng dependency injection do đó, để sử dụng logger trong class, logger cần được chuyển tới hàm tạo class.

Dưới đây là một ví dụ về cách sử dụng logger trong một class tùy chỉnh để ghi lại một ngoại lệ.

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]);
         }
     }
 }

Hãy chú ý rằng, chúng ta đang chuyển \Psr\Log\LoggerInterface trong hàm tạo thường được ưu tiên đối với LoggerInterface được thiết lập thành Monolog class trong di.xml, như đã đề cập ở phần mở đầu.

Trong một vài trường hợp, việc chuyển các logger sang các hàm tạo như các class “Magento\Framework\View\Element\Template” và “Magento\Framework\Model\AbstractModel”. Những class này đã có phần $_logger nên nếu bạn mở rộng các class này, thì một trong những logger class đã sẵn có.

Gỡ lỗi Magento 2 logging

Theo mặc định, Magento chỉ ghi vào nhật ký gỡ lỗi ở chế độ mặc định và phát triển, nhưng không ở chế độ sản xuất.

Để thay đổi giá trị mặc định trong chế độ mặc định và chế độ phát triển thì các lệnh sau có thể được sử dụng:

1. bin/magento setup:config:set –enable-debug-logging=true|false

2. bin/magento cache:flush

Cơ sở dữ liệu Magento 2 logging

Một chức năng tuyệt vời khác của Magento 2 là ghi nhật ký hoạt động của cơ sở dữ liệu. Theo mặc định, nhật ký cơ sở dữ liệu được lưu trong var/debug/db.log. Việc sử dụng ghi nhật ký cơ sở dữ liệu rất được khuyến khích vì nó cho phép chúng ta theo dõi tất cả các truy vấn cơ sở dữ liệu và có thể giúp chúng ta tìm ra các yếu tố cản trở hiệu suất.

Sử dụng lệnh sau để bật / tắt ghi nhật ký cơ sở dữ liệu:

1.  bin/magento dev:query-log:enable|disable

2.  bin/magento cache:flush

Ghi nhật ký

Kể từ phiên bản Magento 2.3.1, việc ghi nhật ký được mở rộng và hiện được ghi tại in var/log/cron.log thay vì var/log/system.log

Trên đây là những điểm cơ bản của Magento 2 Logging. Mặc dù Magento 2 sử dụng trình ghi nhật ký Monolog theo mặc định, các giải pháp ghi nhật ký khác có thể được sử dụng bằng cách đặt tùy chọn cho LoggerInterface miễn là nó tuân thủ tiêu chuẩn PSR-3. 

Ngoài ra còn có nhiều chức năng khác khi sử dụng logging như tạo trình xử lý tùy chỉnh cho tệp nhật ký tùy chỉnh, gửi email với dữ liệu nhật ký, gửi bản ghi nhật ký đến tài khoản Slack, v.v.

Đăng ký theo dõi bản tin của chúng tôi để không bỏ
sót bất kỳ thông tin hữu ích nào!

Lưu ý: Bằng việc cung cấp thông tin liên hệ cho chúng tôi, quý vị đã đồng ý nhận tin tức và các thông tin ưu đãi từ Magenest.