Возможно ли иметь условия в log4j.properties. У меня есть ситуация, когда я хочу, чтобы уровень ведения журнала был установлен в Info on production environment и DEBUG на локальном уровне. Можно ли читать переменные среды в log4j.properties.Уровень ведения журнала регистрации в Log4j.properties
ответ
Нет, вы должны иметь 2 различных log4j.properties файл
Вы можете готовить различные сборки и решить, какие log4j.propeties вы хотите включить в момент сборки, например, с использованием Maven Params, профили или любым другим способом , Невозможно объявить условие в log4j.properties
Это может быть полезно для автономных приложений, в которых у вас нет доступа к конфигурации контейнера. Если вы используете Tomcat, т.е. и у вас есть доступ к конфигурации, более гибкий, чтобы не включать log4j.properties в webapp и настраивать ведение журнала косвенно через контейнер. –
Что я хотел бы предложить, как сказано в комментарии, иметь отдельную версию файла свойств log4j для каждой среды и соблюдать соглашение об именах для удобства обслуживания. скажем, для среды dev, это будет log4j-dev.xml и для производства log4j-prod.xml. Теперь вы можете настроить соответствующий файл для сбора во время работы с использованием
-Dlog4j.configuration=log4j-prod.xml
во время запуска сервера. так что соответствующий файл conffiguration будет выполнен log4j.
В дополнение к вашему ответу, мы можем поддерживать несколько файлов log4j и время сборки на основе среды, выбрали требуемый. –
Да, это было бы здорово с помощью ANT или чего-то подобного this.cool. – Keerthivasan
Вы можете использовать программную конфигурацию при использовании log4j, что дает вам больший контроль над тем, какие опции использовать в какой среде. Вы можете иметь свои собственные файлы конфигурации и использовать свою собственную логику для преобразования их в конфигурацию log4j. Недостатком является то, что вам нужно выполнить init() где-то в вашем приложении. This answer обеспечивает хорошую ссылку.
Настройка ведения журнала - это то, что должно произойти как часть развертывания, а не как часть сборки, т. Е. Вы НЕ должны создавать несколько сборок для разных конфигураций журналов, риск введения других различий в артефактах - большой.
Создайте конструкцию ONE, содержащую конфигурацию по умолчанию, возможно, ту, которую вы хотите использовать в процессе производства.
Внедрение способа поиска и использования альтернативной конфигурации без изменения артефакта. В большинстве случаев это достигается добавлением дополнительного каталога в путь к классам вашего приложения и хранения конфигурации log4j. Вы можете использовать default initialization log4j, используя формат конфигурации с более высоким приоритетом, чем тот, который содержится в артефакте. Это также позволяет вам перенастроить ведение журнала без нового развертывания, что может быть очень полезно при устранении неполадок.
В качестве альтернативы вы можете указать местоположение файла конфигурации для использования через переменные окружения при запуске: -Dlog4j.configuration=log4j-prod.xml
(заимствованные из ответа Keerthi Раманатана в)
No. Но только очертить некоторые другие варианты
в) Я бы посоветовал вам взглянуть на журнал, который обеспечивает простой фасад над log4j, и вы можете изменить свой конфиг во время выполнения. Соответствующая документация может быть найдена here.
b) Если у вас есть процесс сборки на месте (ant/maven), вы можете сделать замену как часть процесса сборки. Если вы используете maven, вы можете настроить profile to build и применить в цикл построения filtering
c) Загрузите файлы log4j из каталога conf для каждой среды. Идея заключается в том, что файлы, установленные для среды, изменяются минимально с течением времени. Вы поддерживаете как в своем репозитории, так и как часть процесса развертывания, убедитесь, что дополнительные/удаленные файлы/реквизиты добавлены/удалены.
- 1. уровень ведения журнала регистрации для журнала
- 2. Формат ведения журнала регистрации
- 3. Разный уровень ведения журнала регистрации SFL4J и JDK
- 4. Уровень ведения журнала не работает
- 5. Уровень журнала регистрации snmp4j
- 6. Что такое уровень ведения журнала по умолчанию для Java
- 7. Как установить уровень ведения журнала в Glassfish?
- 8. Установить уровень корневого ведения журнала в application.yml
- 9. Как изменить уровень ведения журнала в Hibernate4?
- 10. Увеличьте уровень ведения журнала в Apache Samza
- 11. WSO2 ESB TRACE Уровень ведения журнала
- 12. . Уровень ведения журнала Net Trace Listener
- 13. Как установить уровень ведения журнала для HikariCP?
- 14. Уровень ведения журнала под maven surefire
- 15. Установить уровень ведения журнала для отладки в версии Playframework 2.0?
- 16. ли tomcat имеет возможность переопределить уровень ведения журнала log4j?
- 17. Установить уровень ведения журнала для Spring проекта
- 18. Как изменить уровень ведения журнала Hibernate?
- 19. Установить уровень ведения журнала по умолчанию в python
- 20. можно изменить уровень ведения журнала log4j во время выполнения
- 21. Как централизовать конфигурацию ведения журнала и использовать только log4j.properties?
- 22. jcl-over-slf4j: установить уровень ведения журнала howto
- 23. Рекомендации по регистрации на вершине уровней ведения журнала
- 24. Python logbook - как динамически контролировать уровень ведения журнала
- 25. Как распечатать текущую конфигурацию ведения журнала, используемую модулем регистрации python?
- 26. Как установить общий уровень ведения журнала Jetty SLF4J + Logback?
- 27. Методы ведения журнала Nlog
- 28. Возможно ли изменить уровень ведения журнала во время работы приложения?
- 29. Как установить уровень ведения журнала для библиотеки elasticsearch по-разному для моего собственного ведения журнала?
- 30. Настройка ведения журнала GWT
Попробуйте использовать две версии свойств log4j для вашей среды и поместите их из приложения и добавьте в путь к классам. – Keerthivasan
log4j также может управляться программно - возможно, не то, что вы хотите, но –
Спасибо за ответ, я использую этот подход в одном из моих webapps, но это приводит к избыточности, мне было интересно, есть ли способ сделать это условным –