2013-09-08 3 views
1

Я хочу попробовать использовать logj 2 в своем веб-приложении. С log4j 1.x, мы разные конфигурационные файлы настройки на основе окружающей среды и использования контекста сервлета загрузить соответствующую конфигурацию, используя вызов какОпределение различных конфигураций log4j2.xml на основе среды

DOMConfigurator.configureAndWatch (logConfigFile, задержка);

путем передачи расположения файла конфигурации.

Я планировал сделать то же самое для файла конфигурации log4j2, но согласно this и this, использовать DOMConfigurator с log4j2 невозможно или желательно.

Итак, мой вопрос: как я могу использовать разные файлы конфигурации на основе среды с log4j 2?

ответ

0

Благодаря Remko Popma, я разместил вопрос и получил ответ из списка рассылки log4j. Можно использовать переменную «System» или «Environment» с параметром «log4jconfiguration» context-param, чтобы динамически установить файл конфигурации во время выполнения.

+0

Можно ли оставить сообщение или комментарий? У меня есть аналогичный случай использования, я пытаюсь решить – Gowtham

+0

Это (http://apache-logging.6191.n7.nabble.com/Defining-different-log4j2-xml-configurations-based-on-environment-td40639.html# a40662 - это сообщение, которое я упомянул в ответе – adbdkb

1

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

Одним из способов достижения этой цели является использование RoutingAppender; это может делегировать события журнала другим приложениям в зависимости от ключа/значений, заданных в ThreadContextMap. Некоторые пользователи используют имя своего веб-приложения в качестве значения для включения.

Beta-9 (последняя бета-версия до GA) скоро будет выпущена, и у нее будут лучшие документы для использования log4j2 с веб-приложениями (и в FAQ будет представлен подробный пример RoutingAppender).

Ответит ли это на ваш вопрос?

+0

Благодарим за отзыв. Нет, здесь я не пытаюсь иметь отдельные лог-файлы для каждого веб-приложения, но отдельный файл конфигурации для каждой из сред, так что, например, я могу иметь DEBUG в dev и UAT, но не в PROD или может иметь большие размеры файлов в dev и uat, но не в prod. Как я уже упоминал в вопросе, что мы делаем с версией 1, мы имеем, скажем, log4j-dev.xml, log4j-prod.xml и т. Д. И имеем прослушиватель контекста сервлета и переменную env, так что без внесения изменений кода, когда я развертываю приложение в env, он подбирает правильную конфигурацию – adbdkb

+0

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

0

Если вы находитесь в контейнере Servlet 3.x, я бы порекомендовал вам то, что рекомендует Log4j2, добавив log4j-web для других, которые используются и устанавливают параметры контекста, как указано в log4j2 usage manual для веб-приложений.

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