2014-01-06 3 views
0

у меня есть некоторые проблемы, чтобы избавиться от отладочных сообщений, сгенерированных Spring (похож на следующие из них, Есть тысячи этих записей):Невозможно отключить протоколирования сообщений

19:58:08.380 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 'propertyPlaceholderConfigurer' 
19:58:08.380 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'propertyPlaceholderConfigurer' 
19:58:08.383 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 'appConfig' 
19:58:08.383 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'appConfig' 
19:58:08.383 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Eagerly caching bean 'appConfig' to allow for resolving potential circular references 
19:58:08.384 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'appConfig' 

В связанных с этим вопросов, было много предложений с использованием log4j, web.xml, ....
Однако я не использую ни один из них - я просто создаю экземпляр AnnotationConfigApplicationContext и начинаю создавать бобы.

В моем файле pom.xml, нет ссылок на какие рамки протоколирования - я включаю только пружинные зависимости:

<!-- Spring and Transactions --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>${spring-framework.version}</version> 
</dependency> 
<!-- ... --> 
    <artifactId>spring-tx</artifactId> 
    <!-- ... --> 
    <artifactId>spring-boot-starter</artifactId> 
    <!-- ... --> 
    <artifactId>spring-web</artifactId> 
<!-- ... --> 

Я где-то читал, что весна, кажется, использует «Commons Logging» по умолчанию, который Я безуспешно пытался отключить с помощью (как показано в Turn Off Apache Common Logging):

System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); 

Кроме того, я попытался исключить Commons Logging в моей pom.xml, добавив:

<exclusions> 
    <!-- Exclude Commons Logging in favor of SLF4j --> 
    <exclusion> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
    </exclusion> 
</exclusions> 

По-прежнему не повезло, однако.

Далее я попытался включить зависимость от log4j, надеясь, что это изменит регистрацию по умолчанию. Поскольку формат сообщений остался прежним, кажется, что эта попытка также не была успешной.

Что я могу попробовать дальше?

+0

Вы используете файл конфигурации на всех? – cxdf

+0

@ c-qjv0xfi: Нет, вся конфигурация выполняется через аннотации. Нужно ли добавлять один для отключения ведения журнала? – Matthias

+1

Я только что нашел обходное решение: http://stackoverflow.com/a/3838108/232175 – Matthias

ответ

1

Первый: есть slf4j на пути к классу?

SLF4J - это еще одна абстракция журнала для Java, которая также может использоваться вместе с Spring framework. Многие библиотеки/продукты переключились на slf4j.

Есть ли какие-либо зависимости с 'slf4j' в названии? Попробуйте mvn dependency: tree -Dverbose = true и посмотрите, появится ли slf4j. Если это так, посмотрите на веб-сайт slf4j для получения дополнительной информации о его настройке.

Второй: какой файл конфигурации log4j используется?

Подсказка, чтобы определить, используется ли log4j, и если файл конфигурации log4j находится где-то на пути к классу: Попробуйте установить свойство log4j.debug в 'true'.

При использовании mvn exec: java просто добавьте -Dlog4j.debug = true в командную строку.

Если это тест Junit с Maven плагин верный, попробуйте набор systemProperties в самом Surefire плагин: http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html

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