Как мне заставить SLF4J выводить некоторые инструкции ведения журнала?

#java #logging #slf4j

#java #протоколирование #slf4j

Вопрос:

Я впервые использую SLF4J в своем проекте Maven, но я не могу заставить его выводить что-либо (его создатели, очевидно, не придерживаются философии «полезного поведения по умолчанию»).

Я добавил следующее в свой pom.xml:

 <dependency>
    <groupId>com.googlecode.sli4j</groupId>
    <artifactId>sli4j-slf4j-simple</artifactId>
    <version>2.0</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>
  

И я использую это следующим образом:

 final Logger logger = LoggerFactory.getLogger(UdpRemoteConnection.class);

      ...

logger.error("test error");
  

Прямо сейчас мне не нужно ничего особенного, мне просто нужно, чтобы это вошло в консоль. Как мне включить это?

Ответ №1:

Моя обычная конфигурация для Java-проектов с Maven:

pom.xml:

 ...
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.1</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>0.9.26</version>
</dependency>
...
  

src/main/resources/logback.xml или / и src/test/resources/logback.xml:

 <configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
    </layout>
  </appender>

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>
  

Logback — это реализация slf4j и преемник log4j.

Ответ №2:

Похоже, что вы используете Sli4j вместо Slf4j.
Попробуйте использовать Slf4j напрямую:

 <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>


<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>${slf4j.version}</version>
</dependency>
  

(Я использую 1.5.11 в качестве slg4j.version, но последняя доступная версия — 1.6.1)

Комментарии:

1. А, спасибо. И это должно регистрироваться на консоли без какой-либо дополнительной настройки?

2. Да, slf4j-simple просто выводит на консоль, начиная с уровня info и выше. Лично я не думаю, что это очень хорошая идея использовать его. Для входа в Jdk logger по умолчанию лучше использовать slf4j-jdk14.