2013-07-01 3 views
1

Мне нужно создать отдельные журналы для разных экземпляров объектов в моих приложениях. Например, если мы работаем с книгами, мне нужен отдельный файл журнала для каждой книги. Он отлично работает с файлом log4j2.xml, но у меня могут быть сотни таких объектов в памяти, и я не хочу создавать такой длинный файл конфигурации. Я хочу создать приложения и регистраторы из кода. Я искал пример рабочего кода и ничего не нашел.Как создать log4j2 appender из java-кода?

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

Возможно, это можно сделать с помощью подстановочных знаков в именах appender \ logger в log4j2.xml или с помощью средства визуализации?

+0

дубликат: http://stackoverflow.com/questions/8965946/configuring-log4j-loggers-programmatically – nif

+0

no. в этом вопросе они не имеют дело с log4j2 – YuriR

ответ

0

Вы можете использовать статический метод #initialize(String contextName, ClassLoader loader, String configLocation) (см. Источник here) в org.apache.logging.log4j.core.config.Configurator. (Вы можете передать нуль для загрузчика классов.)

Имейте в виду, что этот класс не является частью общественного API так ваш код может сломаться в любой минорной версии.

+0

Он выполнил эту работу, 10 раз! – YuriR

1

Если разбиение базы файлов журналов на «книгу» - это то, что вы ищете, вместо того, чтобы создавать очень специфичный appender или программировать log4j программно, чтобы иметь дело с этим, вы должны взглянуть на MDC.

При правильной установке MDC, она должна быть прямо вперед, чтобы разделить лог-файлы базы на содержании MDC (например, в Logback, есть SiftingAppender. Я считаю, что подобная третьим сторонних appenders, которые делают то же самое)

+0

Привет Адриан. Мне не удалось использовать MDC в моем проекте, я попробую еще раз позже. в любом случае, спасибо. – YuriR

+1

эквивалент Log4j-2.0 для этого - RoutingAppender. Хорошее предложение, Адриан! –

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