В настоящее время у нас есть несколько (10+) веб-приложений в Tomcat, каждое из которых должно иметь свою собственную конфигурацию log4j.xml, потому что
- каждое веб-приложение имеет другое имя файла для DailyRollingFileAppender
- часто бывает 2-3 приложения (журнал информации/ошибок, аудит, статистика)
- кроме того, могут иметь уникальные определения уровня регистратора, чтобы уменьшить некоторые болтливые компоненты.
Растущая проблема заключается в том, что разные стороны, которые используют ведение журнала, хотят использовать разные форматы, правила и уровни ведения журнала:
- разработчики хотят вести журнал TRACE для всего, тестировщики хотят вести журнал INFO, системные администраторы (для производственных развертываний и т. д.) хотят только уровень ERROR.
- как разработчики, так и тестировщики довольны DailyRollingFileAppender, в то время как системные администраторы хотят вместо этого использовать logrotate
- системные администраторы хотят заархивировать журналы, что неудобно для разработчиков и тестировщиков.
Таким образом, наиболее очевидным решением является, конечно, иметь log4j.xml в 3 вариантах (log4j.xml.dev, log4j.xml.test, log4j.xml.prod) для каждого веб-приложения и каким-то образом повторно развернуть соответствующий. Который выглядит как кошмар для обслуживания или даже настройки.
Другой вариант - иметь какое-то место за пределами веб-приложений, где будет 1 файл log4j.xml для всех веб-приложений, который настраивается один раз для этой среды и не развертывается каждый раз повторно. Кажется, лучше, но большой файл log4j.xml может запутаться, и я не нашел никаких рекомендаций относительно того, является ли это вообще хорошим подходом или куда следует поместить log4j.xml в таком случае.
Итак, если у кого-то была подобная дилемма, как вы ее решили? если вы использовали один из подходов выше, или если у вас есть идея для совершенно другого подхода - я хотел бы услышать это. Спасибо.