2014-09-04 2 views
1

Это довольно странно, но только FATAL & Уровень ERROR работает для меня, даже когда я указываю уровень TRACE.jcl-over-slf4j: установить уровень ведения журнала howto

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} 
+0

Возможно, это связано с тем, что у вас есть slf4j-simple на вашем пути к классам. Вы уверены, что применяется шаблон преобразования? Если нет, это из-за slf4j-простого. –

+0

Похоже, вы используете запись в сообществах, а не slf4j. Вероятно, он использует некоторый уровень по умолчанию для регистрации в сообществах и не уважает ваши конфигурации slf4j (поскольку он не должен ... поскольку они разные рамки ведения журнала) – coffeeaddict

+0

@ErikPragt, может быть, не знает, как проверить. Так вы можете сказать мне, пожалуйста, как это проверить и как решить? –

ответ

3

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

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

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

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

    • SLF4J-апи-1.7.7.jar
    • SLF4J-log4j12-1.7.7.jar
    • log4j-1.2.17 .jar

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

  • JCL-над-SLF4J-1.7.7.jar
+0

спасибо за ответ. Мне просто нужно зарегистрировать код Hadoop, поэтому я думаю, что мне нужно «Commons Logging». У меня есть файл log4j.properties вместо 'slf4j.properties', это была опечатка. Также у меня есть все те библиотеки, о которых вы говорили выше. Итак, имея в виду, что я должен сделать, чтобы эти уровни работали? –

0

Если вы хотите использовать общего протоколирования библиотеки, вы должны иметь только зависимости для входа в вашем 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.

+0

У меня есть все эти зависимости. Но работают только уровни «FATAL» и «ERROR» –

Смежные вопросы