Как правильно организовать структуру фабрики логгера? Для логирования в проекте выбрал psr-3 совместимую библиотеку - Monolog (библиотека не имеет значения к вопросу).
Пока логи планирую записывать в файлы.
В дальнейшем, хотелось бы логи перенести в elasticsearch.
Библиотека Monolog - достаточно много конфигурации имеет, чтобы каждый раз не конфигурировать, хотелось бы создать Фабрику, которая будет создавать логгер, сконфигурированный по умолчанию (но при этом иметь возможность изменить конфиг, т.е. иметь доступ к самому объекту логгера-monolog).
Также, нужно, чтобы в будущем, я смог изменить конфиг логгера, чтобы записывать логи не в файл и в elastic.
Как можно создать такую фабрику ? Хотелось бы увидеть пример.

25 Фев 2020 в 19:53
248 +1
0
Ответы
1

Для создания фабрики логгера с помощью Monolog можно использовать следующий подход:

Создайте класс LoggerFactory, который будет отвечать за создание и конфигурацию логгера Monolog:<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
class LoggerFactory
{
public static function createDefaultLogger($logFilePath)
{
$logger = new Logger('default');
$logger->pushHandler(new StreamHandler($logFilePath, Logger::DEBUG));
return $logger;
}
}Создайте класс LoggerConfigurator, который будет отвечать за изменение конфигурации логгера (например, изменение хендлера для записи логов в Elasticsearch):<?php
use Monolog\Handler\ElasticsearchHandler;
class LoggerConfigurator
{
public static function configureElasticsearchHandler(Logger $logger, $elasticsearchConfig)
{
$elasticHandler = new ElasticsearchHandler($elasticsearchConfig);
$logger->pushHandler($elasticHandler);
}
}Используйте фабрику для создания логгера, сконфигурированного по умолчанию, и для изменения конфигурации (например, добавления ElasticsearchHandler):<?php
$logFilePath = '/path/to/logfile.log';
$logger = LoggerFactory::createDefaultLogger($logFilePath);
$elasticsearchConfig = ['hosts' => ['localhost:9200']];
LoggerConfigurator::configureElasticsearchHandler($logger, $elasticsearchConfig);
// Теперь логгер сконфигурирован для записи логов как в файл, так и в Elasticsearch

Таким образом, вы создали фабрику LoggerFactory, которая позволяет создавать логгеры с различной конфигурацией, и класс LoggerConfigurator, который позволяет изменять конфигурацию уже созданного логгера. Это позволит вам легко добавлять и изменять хендлеры для записи логов в различные источники.

18 Апр в 16:45
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 852 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир