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 някъде във вашия classpath. Сигурни ли сте, че моделът за преобразуване е приложен? Ако не, това е заради slf4j-просто.   -  person Erik Pragt    schedule 05.09.2014
comment
Изглежда, че използвате общ регистър, а не 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 с помощта на Търсене на файлове по всички 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, трябва да имате единствените зависимости за регистриране във вашия 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