Log4J API не печатает сообщения в Java-программе - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь реализовать Log4J API в моем проекте Java.Для этого я создал свойства, как показано на изображении ниже (выделено желтым цветом): Изображение структуры проекта

Это свойства, которые я установил в файле:

# TRACE < DEBUG < INFO < WARN < FATAL
log4j.rootLogger=TRACE, DEBUG, INFO, file

# Console
# log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
# log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
# log4j.appender.toConsole.layout.ConversionPatter=%d{HH:mm:ss} %5p [%t] - $c.%M - %m%n

# Redirecting log messages to console
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 HH:mm:ss} %-5p %c{1}:%L - %m%n

Я объявил объект LOGGER в своем классе следующим образом:

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
public class Credits{

    Logger LOGGER = null;
    public Credits(String sources) {
        LOGGER = Logger.getLogger(ChunkRecon.class.getName());
        LOGGER.setLevel(Level.DEBUG);
        String  creditNames = "select tablename, creditNumbers, credit_type from schema.table where credit_type in ("sources")";
        LOGGER.debug("This is a debug message");
        system.out.println("This message is from println");
    }
}

В выводе я вижу сообщение от sysout: This message is from println, но не сообщение отладки.

Может ли кто-нибудь дать мне знать, какую ошибку я здесь делаю?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Ваша log4j.rootLogger декларация кажется неверной.Попробуйте как -

log4j.rootLogger=TRACE,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender

Если вы хотите, чтобы журналы выполнялись только на консоли, полностью удалите журналирование файлов.

log4j.rootLogger=TRACE,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender

См. Раздел Настройка регистраторов из JavaDoc .
Синтаксис для настройки корневого регистратора:

log4j.rootLogger=[level], appenderName, appenderName, ...
0 голосов
/ 11 февраля 2019

Попробуйте переименовать ваши loggerproperties в log4j.properties и убедитесь, что он находится в classpath.Другая проблема с rootLogger, см. объяснение здесь

Также Logger обычно используется в качестве статической переменной.Например:

public class Credits {

    private static final Logger logger = Logger.getLogger(Credits.class);

    public Credits(String sources) {
        logger.setLevel(Level.DEBUG);
        logger.debug("This is a debug message");

        System.out.println("This message is from println");
    }
}

log4j.properties

log4j.rootLogger=debug, 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 HH:mm:ss} %-5p %c{1}:%L - %m%n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...