Cách thêm nhiều logger symfony với các ví dụ

Để đưa nhiều logger vào Symfony, bạn có thể sử dụng phương thức `setLoggers()` của lớp `LoggerInterface`. Phương thức này chấp nhận một mảng các thể hiện của trình ghi nhật ký làm đối số của nó

Dưới đây là một ví dụ về cách bạn có thể sử dụng phương pháp này để đưa nhiều logger vào dịch vụ Symfony

use Psr\Log\LoggerInterface;
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerAwareTrait;

class MyService implements LoggerAwareInterface { use LoggerAwareTrait;

public function __construct(LoggerInterface $primaryLogger, LoggerInterface $secondaryLogger) { $this->setLoggers([$primaryLogger, $secondaryLogger]); }

public function doSomething() { // This will log messages to both the primary and secondary loggers $this->logger->info('Doing something'); } }

Trong ví dụ này, lớp `MyService` triển khai `LoggerAwareInterface` và sử dụng `LoggerAwareTrait` để cung cấp phương thức `setLoggers()`. Hàm tạo của lớp chấp nhận hai thể hiện `LoggerInterface`. một cho bộ ghi chính và một cho bộ ghi phụ. Các logger này được đưa vào dịch vụ bằng phương thức `setLoggers()`

Sau đó, bạn có thể sử dụng thuộc tính `logger` của phiên bản `MyService` để ghi nhật ký tin nhắn cho cả hai logger. Ví dụ: gọi phương thức `doS Something()` sẽ ghi lại một thông báo bằng cách sử dụng phương thức `info()` của cả hai trình ghi nhật ký

Tôi hi vọng cái này giúp được. Hãy cho tôi biết nếu bạn có bất kì câu hỏi nào khác

Với bài viết này, Chúng tôi sẽ giải đáp vấn đề mà nhiều bạn quan tâm khi cài đặt chương trình Ví dụ cách inject nhiều logger symfony.

Cách thêm nhiều logger symfony với các ví dụ
# App/Subscribers/WebhookLoggingListener.php file
public function __construct(
    LoggerInterface $logger, 
    LoggerInterface $mailgunLog, 
    LoggerInterface $dripLog) {
}

# services.yml
App\Subscribers\WebhookLoggingListener:
    arguments:
        $logger: "@logger"
        $mailgunLog: "@monolog.logger.mailgun"
        $dripLog: "@monolog.logger.drip"
    tags:
       - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

Nhiều ví dụ bổ sung xoay quanh chủ đề Cách chèn nhiều logger symfony bằng Ví dụ vui lòng xem thêm

Symfony log message như thế nào?

Theo mặc định, Symfony ghi nhật ký mọi tin nhắn vào một tệp duy nhất (bất kể kênh nào). Mỗi kênh tương ứng với một dịch vụ logger (monolog. tiều phu. XXX) trong vùng chứa (sử dụng trình gỡ lỗi bin/bảng điều khiển php. container monolog để xem danh sách đầy đủ) và chúng được đưa vào các dịch vụ khác nhau

Làm cách nào để đưa một dịch vụ vào một dịch vụ khác trong Symfony?

Symfony tự động đăng ký một dịch vụ trên mỗi kênh (trong ví dụ này, kênh foo tạo một dịch vụ gọi là monolog. tiều phu. foo ). Để đưa dịch vụ này vào các dịch vụ khác, bạn phải cập nhật cấu hình dịch vụ để chọn dịch vụ cụ thể để đưa vào

Symfony tích hợp với monolog như thế nào?

Symfony tích hợp liền mạch với Monolog, thư viện ghi nhật ký PHP phổ biến nhất, để tạo và lưu trữ thông điệp tường trình ở nhiều nơi khác nhau và kích hoạt nhiều hành động khác nhau. Chẳng hạn, sử dụng Monolog, bạn có thể định cấu hình trình ghi nhật ký để thực hiện những việc khác nhau dựa trên mức độ của thông báo (e. g. gửi email khi có lỗi xảy ra)

Làm cách nào để đặt mức nhật ký tối thiểu trong Symfony?

Symfony đi kèm với bộ ghi PSR-3 tối giản. Tiều phu. Để phù hợp với phương pháp ứng dụng mười hai yếu tố, nó sẽ gửi các thông báo bắt đầu từ mức CẢNH BÁO đến thiết bị lỗi chuẩn. Có thể thay đổi mức nhật ký tối thiểu bằng cách đặt biến môi trường SHELL_VERBOSITY