#perl #logging
#perl #ведение журнала
Вопрос:
Я хотел бы включить ведение журнала в модуль Perl, который я пишу, но сохранить переносимость, чтобы приложения, которые его используют, не были привязаны к определенному механизму ведения журнала, такому как Log::Log4Perl.
Я рассмотрел;
- Вход в STDERR и предоставление приложению перенаправлять эти сообщения на собственный механизм ведения журнала (как указано в Log :: Log4Perl FAQ).
- В том числе нет ведения журнала в модуле вообще.
Я подозреваю, что есть лучший способ.
Ответ №1:
Log::Any позволяет модулям CPAN безопасно и эффективно регистрировать сообщения, позволяя приложению выбирать (или отказываться выбирать) механизм ведения журнала, такой как Log::Dispatch или Log::Log4perl.
Комментарии:
1. Это выглядит действительно интересно. Я не могу найти много обсуждений по этому поводу, некоторым мне любопытно, использует ли кто-нибудь это?
2. Обратный поиск зависимостей показывает некоторое использование: metacpan.org/requires/distribution/Log-Any?sort =[[2,1]] . Я собираюсь попробовать.
Ответ №2:
Каким бы способом вы ни поступили в конечном итоге, вам придется выбрать один, и это привяжет его к механизму. Так что можете выбрать один.
Почему бы не проверить, доступен ли Log::Log4Perl? Если это так, отлично, используйте его. Если нет, либо реализуйте обратный вызов, к которому могут подключаться ваши пользователи, либо минимальный набор API, позволяющий им контролировать, что (или если) вы вообще регистрируете?