2011-10-03 5 views
6

Я хотел бы включить запись в модуль Perl, который я пишу, но сохраняю переносимость, чтобы приложения, которые его используют, не привязывались к определенному механизму каротажа, например Log::Log4Perl.Как включить ведение журнала в модуле Perl?

Я рассмотрел;

  1. Вход в STDERR и оставить его в приложение, чтобы перенаправить эти сообщения на его собственный механизм регистрации (как указано в Log::Log4Perl FAQ).
  2. Включая регистрацию в модуле вообще.

Я подозреваю, что есть лучший способ.

ответ

11

Log::Any

Вход :: Любой позволяет модули CPAN безопасно и эффективно регистрировать сообщения, в то время позволяя выбрать приложение (или снижение на выбор) механизм протоколирования, таких как Log :: Отправка или Войти :: Log4perl ,

+0

Это выглядит действительно интересно. Я не могу много обсуждать это, некоторые мне любопытно, если кто-нибудь его использует? – Hugh

+1

Обратный поиск зависимостей показывает некоторое использование: https://metacpan.org/requires/distribution/Log-Any?sort=[[2,1]]. Я собираюсь уйти. – spazm

0

Каким бы способом вы ни занимались, вам нужно будет выбрать один, и это привяжет его к механизму. Так может также выбрать один.

Почему бы не проверить, доступен ли Log :: Log4Perl? Если это так, пользуйтесь им. Если нет, либо выполните обратный вызов, к которому могут подключиться ваши пользователи, или минимальный набор API, позволяющий им контролировать, что (или если) вы вообще регистрируете?

Смежные вопросы