Я хотел бы иметь модули, управляющие их журналированием во время выполнения, но не имея всего, ссылающегося на один монолитный файл конфигурации.Имея дело с процессами, выполняющимися с разными разрешениями, я действительно не хочу иметь дело с каждым процессом, которому необходимо иметь доступ к каждому журналу в системе, когда они только записывают подмножество из них.
ОднакоЯ не нахожу много документации в руководстве Log4perl о том, как инициализировать дополнительные дополнения из файла конфигурации во время выполнения.http://metacpan.org/pod/Log::Log4perl::Appender ссылается на метод add_appender, но он работает с экземплярами объектов appender, а не с файлами conf.Он также не определяет объекты logger и отношения logger-> appender.
Я попытался получить каждый пакет init из своего собственного conf, но он просто забивает существующую конфигурацию каждый раз, когда она инициализируется.Я хотел бы сделать что-то вроде:
my $foo = Foo->new() ## Checks Log::Log4perl::initialized(), sees that it
## hasn't been initalized yet, inits Log4perl from foo.conf
my $bar = Bar->new() ## Checks Log::Log4perl::initialized(), sees that it
## has been initalized. Adds appenders and loggers defined
## in bar.conf into the initialized configuration
Как я могу проанализировать и добавить конфигурацию в текущую конфигурацию?
Редактировать: Пробалем с использованием переменной пакетазаключается в том, что это просто роль Moose, используемая различными классами, в значительной степени просто версия ответа MooseX :: Role :: Parameterized в Создание модулей самостоятельной регистрации с Log :: Log4perl .Таким образом, мой регистратор собирается в библиотеку, потребляющую его, и у меня нет глобальной переменной, с которой я могу работать каждый раз, когда использую ее.
Хотя ..
Если я объявлюглобальная переменная вне блока ролей MooseX :: Role :: Parameterized, будет ли каждый класс, использующий роль, использовать одну и ту же переменную conf?