Как правильно организовать структуру фабрики логгера?
Для логирования в проекте выбрал psr-3 совместимую библиотеку - Monolog (библиотека не имеет значения к вопросу).
Пока логи планирую записывать в файлы.
В дальнейшем, хотелось бы логи перенести в elasticsearch.
Библиотека Monolog - достаточно много конфигурации имеет, чтобы каждый раз не конфигурировать, хотелось бы создать Фабрику, которая будет создавать логгер, сконфигурированный по умолчанию (но при этом иметь возможность изменить конфиг, т.е. иметь доступ к самому объекту логгера-monolog).
Также, нужно, чтобы в будущем, я смог изменить конфиг логгера, чтобы записывать логи не в файл и в elastic.
Как можно создать такую фабрику ? Хотелось бы увидеть пример.
Это один из примеров ситуации, когда использование синглтона может быть частично оправдано.
class LoggerFactory {
static $instance = null;
public static create() {
if (!is_null(static::$instance)) {
return static::$instance;
}
static::$instance = new Logger('name');
// ну т.д.
return static::$instance;
}
}
// используется вроде бы так
$logger = LoggerFactory::create();