Я использую logback с slf4j в моем проекте Maven Java. В настоящее время файл конфигурации журнала (logback.xml) находится в папке src -> main -> resources
. И это работает нормально.
Моя проблема в том, что мне нужно дать моему клиенту возможность настроить ведение журнала по своему усмотрению. Для этого logback.xml должен быть вне банки, когда я его создаю. Но поскольку xml находится внутри папки src, он находится внутри банки, и никто не может изменить его после сборки.
Как этого добиться?
Возьмите logback.xml за пределы банки
Ответы:
Указание расположения файла конфигурации по умолчанию в качестве системного свойства Вы можете указать расположение файла конфигурации по умолчанию с помощью системного свойства с именем «logback.configurationFile». Значением этого свойства может быть URL-адрес, ресурс в пути к классу или путь к файлу, внешнему по отношению к приложению.
java -Dlogback.configurationFile=/path/to/config.xml -jar myapp.jar
Файл logback.xml должен находиться в пути к классам, но не обязательно внутри какой-либо конкретной банки. Детали того, как вы хотите это сделать, зависят от конкретного используемого механизма развертывания: как то, что запускает это приложение, устанавливает путь к классам? Каким бы ни был этот механизм, вы должны иметь возможность настроить его так, чтобы он включался везде, где вы размещаете файл logback.xml, а затем просто не включали его в src/main/resources для встраивания в файл jar.
В зависимости от сложности того, что вы собираетесь делать, вы можете найти maven-assembly -plugin полезен для создания дистрибутива зависимостей.
Расположение файла конфигурации логбэка можно указать в application.properties или application.yml.
application.yml
logging:
config: logback-spring.xml
Это позволяет разместить jar и log-back.xml в одной папке.
Обратите внимание, что файл logback-spring.xml в папке вашего проекта не должен быть включен в вашу банку. Этого можно добиться, настроив build.gradle или pom.xml.
build.gradle
bootJar {
archiveName 'your-project.jar'
exclude("*.xml")
}
Использование Scala SBT (1.2.1) в Windows:
Пакетный файл:
@cd %~dp0
@set JAVA_OPTS=-Dlogback.configurationFile=logback.xml
@sbt clean run
у меня работало (странно...)