Log4perl: Как мне динамически загружать приложения во время выполнения?

Я бы хотел, чтобы модули управляли их журналированием во время выполнения, но без привязки всего к одному монолитному файлу конфигурации. Имея дело с процессами, работающими с разными разрешениями, я действительно не хочу иметь дело с каждым процессом, которому необходимо иметь доступ к каждому журналу в системе, когда они пишут только в их подмножество.

Однако я ' m не нашел много документации в руководстве Log4perl о том, как инициализировать дополнительные дополнения из файла конфигурации во время выполнения. http://metacpan.org/pod/Log::Log4perl::Appender ссылается на метод add_appender, но он работает с экземплярами объектов appender вместо файлов 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

Как я могу проанализировать и добавить конфигурацию в текущую конфигурацию?

Изменить: Проблем с использованием переменной пакета заключается в том, что это просто роль лося, являющаяся потребляется различными классами, в значительной степени просто MooseX :: Role :: Parameterized версия ответа Ether в Создание модулей саморегистрации с помощью Log :: Log4perl . Таким образом, мой регистратор включается в библиотеку, потребляющую его, и у меня нет глобальной переменной, с которой я мог бы работать каждый раз, когда использую ее.

Хотя ...

Если я объявлю глобальную переменную за пределами MooseX :: Role :: параметризованный ролевой блок, Я хотел бы использовать CMake для компиляции, и я не могу просто загрузить и установить его из-за административных ...

Я разрабатываю на машине Windows, для которой у меня нет прав администратора. Я хотел бы использовать CMake для компиляции, и я не могу просто загрузить и установить его из-за административных ограничений.

Я также хотел бы избежать компиляции CMake из исходного кода (если это возможно). Существуют ли переносимые двоичные файлы для Windows, которые позволят просто использовать CMake?

7
задан Peter Mortensen 19 January 2019 в 23:12
поделиться