Подтвердить что ты не робот

Как включить Logger.debug() в Log4j

При попытке выполнить следующие строки отображаются только последние два оператора ( "Вот некоторые ERROR" и "Вот некоторые FATAL" ), и первые три оператора не отображаются. Я только начал изучать эту тему, может ли кто-нибудь сказать, почему это происходит?

    logger.debug("Here is some DEBUG");
    logger.info("Here is some INFO");
    logger.warn("Here is some WARN");
    logger.error("Here is some ERROR");
    logger.fatal("Here is some FATAL");

log4j.property имеет

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=[%5p] %d{mm:ss}(%F:%M:%L)%n%m%n%n
4b9b3361

Ответ 1

У вас, вероятно, есть файл log4j.properties где-то в проекте. В этом файле вы можете настроить, какой уровень отладочного вывода вы хотите. См. Этот пример:

log4j.rootLogger=info, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.logger.com.example=debug

Первая строка устанавливает уровень журнала для корневого регистратора на "info", т.е. на консоль будут печататься только информация, предупреждение, ошибка и фатальный файл (который указан ниже приложением ниже).

Последняя строка задает регистратор для com.example. * (если вы получите ваши журналы с помощью LogFactory.getLogger(getClass())) будет на уровне отладки, то есть отладка также будет напечатана.

Ответ 2

Вот быстрый однострочный хак, который я иногда использую для временного включения журнала отладки в тесте JUnit:

Logger.getRootLogger().setLevel(Level.DEBUG);

Ответ 3

Поместите файл с именем log4j.xml в свой путь к классам. Содержание, например,

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %t %c{1}:%L - %m%n"/>
        </layout>
    </appender>

    <root>
        <level value="debug"/>
        <appender-ref ref="stdout"/>
    </root>

</log4j:configuration>

Ответ 4

Это, вероятно, происходит потому, что для вашей конфигурации log4j установлено значение ERROR. Найдите файл log4j.properties с содержимым следующего вида:

log4j.rootLogger=ERROR, CONSOLE

# console logging
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %-20.20t %-24c{1}: %m%n

Здесь rootLogger установлен на ERROR с помощью приложения CONSOLE.

Обратите внимание, что некоторые приложения, такие как консольный appender, также имеют свойство Threshold, которое можно использовать для отмены уровня rootLoggers. Вы должны проверить оба в этом случае.

Ответ 5

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

log4j.appender.RCS=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RCS.File.DateFormat='.'yyyy-ww
#define output location
log4j.appender.RCS.File=C:temp/logs/MyService.log
#define the file layout
log4j.appender.RCS.layout=org.apache.log4j.PatternLayout
log4j.appender.RCS.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm a} %5 %c{1}: Line#%L - %m%n
log4j.rootLogger=warn
#Define package specific logging
log4j.logger.MyService=debug, RCS

Ответ 6

Если вы приходите сюда, потому что вы используете ведение журнала сообщества Apache с log4j, и log4j не работает так, как вы ожидаете, проверьте, действительно ли у вас есть log4j.jar в вашем пути к классам времени выполнения. Это немного озадачило меня. Теперь я настроил runner в моей среде dev, чтобы включить -Dlog4j.debug в командной строке Java, чтобы я всегда мог видеть, что Log4j инициализируется правильно

Ответ 7

Вам нужно установить уровень регистрации на самое низкое, которое вы хотите отобразить. Например, если вы хотите отображать сообщения DEBUG, вам необходимо установить уровень регистрации на DEBUG.

Apache log4j manual содержит раздел конфигурации.

Ответ 8

Это происходит из-за того, что уровень ведения журнала вашего регистратора установлен на "ошибка", поэтому вы видите сообщения об ошибках или выше этого уровня с точки зрения серьезности, поэтому вы также видите "фатальную" ошибку, сообщение.

Если вы установите уровень ведения журнала на "отладочный" на вашем журнале в вашем log4j.xml, вы увидите все сообщения.

Взгляните на log4j для объяснения.