Как работает slf4j? Не создается журнал - PullRequest
17 голосов
/ 05 января 2012

У меня ниже код в Java 1.6:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static Logger log = LoggerFactory.getLogger(myfile.class);

Теперь я помещаю slf4j-api-1.6.4.jar & slf4j-simple-1.6.4.jar в classpath, и код прекрасно компилируется, но куда он записывает всю информацию ????

У меня log.info ("тест"); но это не создает никакого файла журнала. Я попытался создать log4j.properties с содержанием ниже:

log4j.appender.stdout=org.apache.log4j.RollingFileAppender
log4j.appender.stdout.File=/var/abc.log
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}]%6p %c{1}:%L - %m%n
log4j.appender.stdout.MaxFileSize=50000KB
log4j.appender.stdout.MaxBackupIndex=200

log4j.rootLogger=info, stdout

Но это не работает, я знаю, выше файл необходим для log4j, но как работает slf4j ?? Нужно ли создавать какой-либо файл свойств, похожий на log4j ?? Если да, куда мне его поставить?

Спасибо!

Ответы [ 3 ]

37 голосов
/ 05 января 2012

SLF4J - это просто фасад, который позволяет легко переключать различные каркасы журналирования. Все вызовы журналирования, использующие API SLF4J, будут делегированы базовой платформе логирования.

Вам не нужно создавать какой-либо файл свойств для SLF4J. Все, что вам нужно сделать, это использовать правильный флягу "привязки SLF4J", которая соответствует вашим системам журналирования, чтобы делегировать все вызовы журналирования API SLF4J.к базовой структуре ведения журнала.На следующем рисунке показана взаимосвязь между SLF4J, «привязками SLF4J» и базовыми каркасами ведения журналов

enter image description here

slf4j-simple-1.6.4.jar делегирует все события в System.err, но не делегирует в log4jAPI.То, вместо этого вы должны использовать slf4j-log4j12-1.6.4.jar.

Для суммирования вы должны использовать следующие jar:

  • slf4j-api-1.6.4.jar
  • slf4j-log4j12-1.6.4.jar
  • log4j-1.2.16.jar

Ссылка

1 голос
/ 05 января 2012

SLF4J - это просто абстракция журналирования - она ​​сама не пишет никаких журналов. Используйте Logback - он реализует SLF4J изначально и написан тем же парнем, который написал SLF4J и log4j. SLF4J и Logback - отличная среда - нам нравится, как SLF4J связывает другие среды (JUL, Commons Logging, log4j) с нашей средой выбора (которая является Logback).

0 голосов
/ 05 июня 2015

Я использовал slf4j-api (jar).Я заменил ядро ​​logback для зависимостей (jar) на logback-classic, после чего он начал регистрировать.

...