2016-05-12 3 views
0

Я работаю над приложением Spring-MVC, в котором я пытаюсь снова запустить журналирование. К сожалению, когда-то он просто прекратил работать, я не знаю, что это вызывает. Я попробовал некоторые предложения в сети, но ничего полезного. Какие-либо предложения?Spring: Logging не работает с log4j или logback

pom.xml:

<packaging>war</packaging> 
    <properties> 
     <java-version>1.8</java-version> 
     <org.springframework-version>4.1.6.RELEASE</org.springframework-version> 
     <org.aspectj-version>1.7.4</org.aspectj-version> 
     <org.slf4j-version>1.7.5</org.slf4j-version> 
     <hibernate.version>4.3.9.Final</hibernate.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <springsecurity.version>4.0.1.RELEASE</springsecurity.version> 
     <spring-platform.version>1.1.3.RELEASE</spring-platform.version> 
     <jetty.version>9.2.9.v20150224</jetty.version> 
    </properties> 

    <parent> 
     <groupId>io.spring.platform</groupId> 
     <artifactId>platform-bom</artifactId> 
     <version>1.1.3.RELEASE</version> 
     <relativePath /> 
    </parent> 

    <dependencies> 

    <!-- Spring framework dependencies --> 

     <dependency> 
      <groupId>org.springframework.mobile</groupId> 
      <artifactId>spring-mobile-device</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-redis</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
     </dependency> 

     <!-- Spring security dependencies --> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-taglibs</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
     </dependency> 


    <!-- Logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>1.7.5</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.0.13</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-core</artifactId> 
      <version>1.0.13</version> 
      <scope>runtime</scope> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>apache-log4j-extras</artifactId> 
      <version>1.1</version> 
     </dependency> 

У меня есть и log4j.xml и logback.xml:

log4j.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> 
<log4j:configuration> 


    <!-- Appenders --> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Target" value="System.out" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p: %c - %m%n" /> 
     </layout> 
    </appender> 
    <logger name="org.cometd"> 
     <level value="debug"/> 
    </logger> 
    <!-- Root Logger --> 
    <root> 
     <priority value="OFF" /> 
     <appender-ref ref="console" /> 
    </root> 

</log4j:configuration> 

logback.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <include resource="org/springframework/boot/logging/logback/base.xml"/> 


    <logger name="org.cometd" level="debug"/> 
    <logger name="com.tooltank.spring.chat.ChatServiceImpl" level="info"/> 
</configuration> 

Во время запуска сервера я получаю следующее:

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home//WEB-INF/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
13:43:29,173 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 
13:43:29,173 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 
13:43:29,174 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/home/path/to/logback.xml] 
13:43:29,292 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 
13:43:29,298 |-ERROR in ch.qos.logback.core.joran.action.IncludeAction - Could not find resource corresponding to [org/springframework/boot/logging/logback/base.xml] 
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 
13:43:29,299 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.cometd] to DEBUG 
13:43:29,299 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.tooltank.spring.chat.ChatServiceImpl] to INFO 
13:43:29,299 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 
13:43:29,300 |-INFO in [email protected] - Registering current configuration as safe fallback point 

Что мне не хватает? Спасибо.

ответ

1

Вам следует избегать использования log4j и logback в одном приложении. Если у вас есть и банки в вашем пути к классам загрузчик классов будет выбрать либо один из них (вроде случайных ..) Это указывает этот журнал заявление:

SLF4J: Class path contains multiple SLF4J bindings. 

Если вы собираетесь использовать Logback вам необходимо поместить logback.xml в пути к классу вашего приложения. Из документации:

logback попытается настроить себя, используя файлы logback-test.xml или logback.xml, если они найдены в пути к классу.

Вы также можете проверить эту ссылку: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-configure-logback-for-logging

Edit: Я думаю, вы также должны добавить к appender'у к консоли, такие как:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
<!-- encoders are assigned the type 
    ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
<encoder> 
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
</encoder> 

, а затем добавьте приложение в регистратор:

<logger name="org.cometd" additivity="false"> 
    <level value="DEBUG" /> 
    <appender-ref ref="STDOUT" /> 
</logger> 

С уважением!

+0

Рассматривая текущую ситуацию, что бы вы порекомендовали, удалите log4j или logback, в зависимости от того, что проще в управлении, и я могу получить журналы из библиотек с отладкой и так далее. –

+0

Моим личным фаворитом было бы сохранить журнал, но это зависит от того, что вам нужно. Проверьте ссылку, которую я добавил в своем ответе. Я думаю, это могло бы помочь вам – Joschi

+0

Привет, я удалил все зависимости для log4j и slf4j и только сохранил log-классический и log-core из ch.qos.logback. Конфигурация xml такая же, как у вас в ссылке. Даже после этого я не вижу сообщений отладки, никаких идей. Журнал автозагрузки: http://pastebin.com/pSdmY77U –

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