2016-06-20 6 views
2

Не удалось найти хороший ответ, почему SLF4J регистрации не работает с пружиной 4. Благодаря this post я сделал особенно всю работу, но автор не упоминает, что:Как интегрировать запись SLF4J с помощью Spring 4?

Обязательным протоколирования зависимость в Spring является Jakarta Commons Logging API (JCL)

(http://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/htmlsingle/).

Это означает, что если мы хотим, чтобы SLF4J работать МЫ ДОЛЖНЫ EXCLUDEВикисклада лесозаготовительных из нашего пути к классам (или pom.xml при использовании Maven). При использовании пружинного сердечника maven автоматически выбирается обычная запись. (Я понял это при выполнении команды «mvn dependency: tree»).

ЭТАПЫ ВОПРОИЗВЕДЕНИЕ:

  1. Исключить Обще-каротажа с пружинным сердечником

    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-core</artifactId> 
        <version>${spring.version}</version> 
        <exclusions> 
         <exclusion> 
          <groupId>commons-logging</groupId> 
          <artifactId>commons-logging</artifactId> 
         </exclusion> 
        </exclusions> 
    </dependency> 
    
  2. Добавить в pom.xml следующие зависимости:

    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-api</artifactId> 
        <version>1.7.19</version> 
    </dependency> 
    <dependency> 
        <groupId>org.apache.logging.log4j</groupId> 
        <artifactId>log4j-slf4j-impl</artifactId> 
        <version>2.5</version> 
    </dependency> 
    <dependency> 
        <groupId>org.apache.logging.log4j</groupId> 
        <artifactId>log4j-api</artifactId> 
        <version>2.5</version> 
    </dependency> 
    <dependency> 
        <groupId>org.apache.logging.log4j</groupId> 
        <artifactId>log4j-core</artifactId> 
        <version>2.5</version> 
    </dependency> 
    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>jcl-over-slf4j</artifactId> 
        <version>1.7.19</version> 
    </dependency> 
    
  3. Создать log4j2 .xml файл (если вы хотите, чтобы log4j2 регистрировался через slf4j).

    <?xml version="1.0" encoding="UTF-8"?> 
    <Configuration status="WARN"> 
    <Appenders> 
    <Console name="CONSOLE" target="SYSTEM_OUT"> 
        <PatternLayout 
         pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
    </Console> 
    </Appenders> 
    <Loggers> 
    <Root level="error"> 
        <AppenderRef ref="CONSOLE" /> 
    </Root> 
    <logger level="info" additivity="false" name="org.springframework.security"> 
        <AppenderRef ref="CONSOLE" /> 
    </logger> 
    <logger level="info" additivity="false" name="org.springframework.web"> 
        <AppenderRef ref="CONSOLE" /> 
    </logger> 
    <logger level="warn" additivity="false" name="controllers"> 
        <AppenderRef ref="CONSOLE" /> 
    </logger> 
    </Loggers> 
    </Configuration> 
    
  4. сообщению журнал запись в классах:

    private final Logger logger =LoggerFactory.getLogger(this.getClass()); 
    logger.debug("This is a debug message"); 
    logger.info("This is an info message"); 
    

ответ

3

Вам не нужно исключить Викисклад регистрацию. Если вы используете log4j-jcl вместо jcl-over-slf4j, ведение журнала Spring будет направлено на log4j напрямую, а не через slf4j.

+0

согласен с @rgoers. Он отлично работает! –

1

Теперь, спасибо к @rgoers мой каротаж часть pom.xml выглядит следующим образом:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.19</version> 
    </dependency>  
    <dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-slf4j-impl</artifactId> 
    <version>2.5</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-api</artifactId> 
    <version>2.5</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-core</artifactId> 
    <version>2.5</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-jcl</artifactId> 
    <version>2.5</version> 
</dependency> 
+0

Рад это услышать. Возможно, вы захотите перейти на версию 2.6.1, чтобы получить преимущества от мусора или с низким содержанием мусора. –

+0

Кроме того, если ответ Ральфа помог решить проблему, подумайте о принятии его ответа, чтобы он получил очки репутации. –