jcl-over-slf4j: как установить уровень ведения журнала

Это довольно странно, но у меня работает только уровень FATAL & ERROR, даже когда я указываю уровень TRACE.

LoggingTest.class:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;

public class SLF4JTest {

    private static Log _LOG = LogFactory.getLog(SLF4JTest.class);

    @Test
    public void test() {
        _LOG.fatal("Fatal works!"); //works
        _LOG.error("Error works!"); //works
        _LOG.warn("Warn works!"); //doesn't work
        _LOG.info("Info works!"); //doesn't work
        _LOG.debug("Debug works"); //doesn't work
        _LOG.trace("Trace works"); //doesn't work
    }
}

log4j.properties:

log4j.rootLogger=TRACE, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSS}

person VB_    schedule 04.09.2014    source источник
comment
Вероятно, это потому, что у вас где-то есть slf4j-simple в пути к классам. Вы уверены, что шаблон преобразования применен? Если нет, то это из-за slf4j-simple.   -  person Erik Pragt    schedule 05.09.2014
comment
Похоже, вы используете ведение журнала Commons, а не slf4j. Вероятно, он использует какой-то уровень по умолчанию для ведения журнала общих ресурсов и не соблюдает ваши конфигурации slf4j (как и не следует... поскольку они являются разными структурами ведения журнала)   -  person coffeeaddict    schedule 05.09.2014
comment
@ErikPragt, может быть, не знаю, как проверить. Подскажите, пожалуйста, как это проверить и как решить?   -  person VB_    schedule 05.09.2014
comment
@coffeeaddict не знаю, как проверить. Подскажите, пожалуйста, как это проверить и как решить?   -  person VB_    schedule 05.09.2014
comment
Не могли бы вы предоставить версии любой зависимости ведения журнала, существовавшей в вашем проекте?   -  person Dmytro Plekhotkin    schedule 07.09.2014
comment
@Dmytro Я сделаю это через несколько часов.   -  person VB_    schedule 08.09.2014
comment
@Dmytro как это сделать? В родительских и подпроектах очень большой файл pom.xml. Можете уточнить какой вам нужен?   -  person VB_    schedule 08.09.2014
comment
Найдите в рабочей области вашей IDE с помощью File Search по всем файлам pom.xml такие слова: slf4j, log.   -  person Dmytro Plekhotkin    schedule 08.09.2014


Ответы (2)


В вашем проекте могут быть ошибки.

  • Во-первых, если вы хотите использовать SLF4J в своем коде, вы должны изменить тип своего экземпляра:

    // Instance of SLF4J
    private static final org.slf4j.Logger _LOG = 
            org.slf4j.LoggerFactory.getLogger(SLF4JTest.class);
    
  • Во-вторых, вы должны переименовать файл slf4j.properties в log4j.properties.

  • В-третьих, вам нужно добавить следующие библиотеки:

    • slf4j-api-1.7.7.jar
    • slf4j-log4j12-1.7.7.jar
    • log4j-1.2.17.jar

Однако, если вы действительно хотите использовать Commons Logging, добавьте еще один (замените commons-logging-1.1.3.jar на это):

  • jcl-over-slf4j-1.7.7.jar
person Paul Vargas    schedule 04.09.2014
comment
Спасибо за ответ. Мне просто нужно зарегистрировать код Hadoop, поэтому я думаю, что мне нужно Commons Logging. У меня файл log4j.properties вместо slf4j.properties , это опечатка. Также у меня есть все те библиотеки, которые вы упомянули выше. Имея это в виду, что я должен сделать, чтобы эти уровни заработали? - person VB_; 05.09.2014

Если вы хотите использовать библиотеку common-logging, у вас должны быть зависимости only для ведения журнала в файле pom.xml, как показано ниже:

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

Также позаботьтесь о расположении файла log4.properties. Для тестов он должен находиться в папке src/test/resources. Для выполнения приложения он должен храниться в папке src/main/resources.

person Dmytro Plekhotkin    schedule 07.09.2014
comment
У меня есть все эти зависимости. Но работают только уровни FATAL и ERROR - person VB_; 08.09.2014