2014-11-11 3 views
0

Я создал образец приложения Jhipster. Одна из первых вещей, которые я хочу сделать, это изменить запись по умолчанию для использования log4j2.Изменение JHipster для использования log4j2

Я обновил свойство весны-загрузки моего приложения, чтобы указать на версию 1.2.0 M2.

Оглядываясь, я нашел несколько примеров способов исключить logback и включить log4j2, но я не продвигаюсь вперед. Мне удалось включить log4j2, но он все еще находит ссылки на logback. Я считаю, что мне, возможно, придется изменить какой-то шаблонный код jiffster, созданный для меня, но, пытаясь узнать много вещей сразу, я не уверен в лучшем подходе.

Вот часть моего Gradle файла, в котором я попытался исключить регистрацию (на другой прибегая к помощи я сделал), и вставленный log4j2:

compile group: 'com.mattbertolini', name: 'liquibase-slf4j', version: liquibase_slf4j_version 
compile group: 'org.springframework.boot', name: 'spring-boot-actuator', version: spring_boot_version 
compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2', version:spring_boot_version 
compile group: 'org.springframework.boot', name: 'spring-boot-autoconfigure', version: spring_boot_version 
compile group: 'org.springframework.boot', name: 'spring-boot-loader-tools', version: spring_boot_version 
compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop', version: spring_boot_version 
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: spring_boot_version 
compile group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: spring_boot_version 
compile group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: spring_boot_version 
compile(group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: spring_boot_version) { 
    exclude (module: 'spring-boot-starter-logging') 
    exclude (module: 'spring_boot-starter-tomcat') 
} 
compile group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: spring_boot_version 
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version: spring_boot_version 
compile group: 'org.springframework.cloud', name: 'spring-cloud-cloudfoundry-connector', version: spring_cloud_version 
compile group: 'org.springframework.cloud', name: 'spring-cloud-spring-service-connector', version: spring_cloud_version 
compile group: 'org.springframework.cloud', name: 'spring-cloud-localconfig-connector', version: spring_cloud_version 
compile(group: 'org.springframework', name: 'spring-context-support') { 
    exclude(module: 'quartz') 
} 

делает это я получаю странные ошибки, когда я пытаюсь запустите мое приложение:

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/C:/Users/sssn/.gradle/caches/modules-2/files2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.0.2/f2cc4647e51810c3dd11df832229fac01d41aa51/log4j-slf4j-impl-2.0.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/C:/Users/sssn/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.1.2/b316e9737eea25e9ddd6d88eaeee76878045c6b2/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 
Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.apache.logging.slf4j.Log4jLoggerFactory loaded from file:/C:/Users/jmcgaffigan/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.0.2/f2cc4647e51810c3dd11df832229fac01d41aa51/log4j-slf4j-impl-2.0.2.jar). Object of class [org.apache.logging.slf4j.Log4jLoggerFactory] must be an instance of class ch.qos.logback.classic.LoggerContext 

Если у кого-нибудь есть какие-либо советы или предлагаются «попробуйте это», это было бы очень признательно.

UPDATE: Запуск Gradle зависимостей всегда показывает каротаж, приходящая через пакет загрузки запуска АОП:

+--- org.springframework.boot:spring-boot-starter-aop:1.2.0.M2 
| +--- org.springframework.boot:spring-boot-starter:1.2.0.M2 
| | +--- org.springframework.boot:spring-boot:1.2.0.M2 (*) 
| | +--- org.springframework.boot:spring-boot-autoconfigure:1.2.0.M2 (*) 
| | +--- org.springframework.boot:spring-boot-starter-logging:1.2.0.M2 
| | | +--- org.slf4j:jcl-over-slf4j:1.7.7 
| | | | \--- org.slf4j:slf4j-api:1.7.7 
| | | +--- org.slf4j:jul-to-slf4j:1.7.7 
| | | | \--- org.slf4j:slf4j-api:1.7.7 
| | | +--- org.slf4j:log4j-over-slf4j:1.7.7 
| | | | \--- org.slf4j:slf4j-api:1.7.7 
| | | \--- ch.qos.logback:logback-classic:1.1.2 
| | |   +--- ch.qos.logback:logback-core:1.1.2 
| | |   \--- org.slf4j:slf4j-api:1.7.6 -> 1.7.7 
| | +--- org.springframework:spring-core:4.1.1.RELEASE (*) 
| | \--- org.yaml:snakeyaml:1.13 
| +--- org.springframework:spring-aop:4.1.1.RELEASE (*) 
| +--- org.springframework:spring-core:4.1.1.RELEASE (*) 
| +--- org.aspectj:aspectjrt:1.8.2 
| \--- org.aspectj:aspectjweaver:1.8.2 
+--- org.springframework.boot:spring-boot-starter:1.2.0.M2 (*) 

Я попытался сделать исключающий на Teh стартер-АОП и начать пакеты, но до сих пор нет удачи.

ответ

0

Если вы хотите использовать зависимость, то исключаете, чтобы исключить что-либо, исключение должно быть применено к зависимости от, которая транзитно зависит от модуля, который вы пытаетесь исключить. Это может стать очень громоздким очень быстро - вам нужно объявить исключение почти во всех зависимостях Spring Boot.

Лучшей альтернативой является применение исключение для всей конфигурации:

configurations { 
    compile.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' 
} 

Или даже любой конфигурации:

configurations { 
    all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' 
} 
+0

Спасибо Энди. Исправлена ​​проблема с * .exclude. Вы сэр - это Godsend – Jay

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