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

Я задумчиво задался вопросом то же самое, как описано в ответе на: то, Какого tool/application/whatever Вы желаете, существовало?

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

, Когда люди думают об альтернативах хранению источника как текст, они кажутся часто, сразу думают с точки зрения графических представлений (я обращаюсь здесь к коммерческим продуктам, которые были доступны - например, HP-vee). И если мы смотрим на опыт людей как разработчики FPGA, мы видим, что программирование (исключительно) графически просто не работает - следовательно языки как Verilog и VHDL.

, Но я не вижу, что устройство хранения данных источника обязательно должно быть связано с методом записи его во-первых. Запись источника может быть в основном сделана как текст - что означает, что проблемы копирования/вставки могут все еще быть достигнуты. Но я также вижу, что, позволяя слияниям и откатам, которые будут сделаны на основе маркируемого метаисточника, мы могли достигнуть более точных и более мощных инструментов управления.

47
задан matt b 4 November 2009 в 13:03
поделиться

7 ответов

Возможно, где-то в проекте есть файл 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 ()) ) будет на уровне отладки, т.е. отладка также будет напечатана.

61
ответ дан 26 November 2019 в 19:17
поделиться

Here's a quick one-line hack that I occasionally use to temporarily turn on debug logging in a JUnit test:

Logger.getRootLogger().setLevel(Level.DEBUG);
52
ответ дан 26 November 2019 в 19:17
поделиться

Это, вероятно, происходит из-за того, что ваша конфигурация log4j установлена ​​на ОШИБКА . Найдите файл 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 установлен на уровень ОШИБКА здесь с помощью приложения CONSOLE .

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

6
ответ дан 26 November 2019 в 19:17
поделиться

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

В руководстве Apache log4j есть раздел о конфигурации.

3
ответ дан 26 November 2019 в 19:17
поделиться

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

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

Посмотрите введение log4j для объяснения.

2
ответ дан 26 November 2019 в 19:17
поделиться

Поместите файл с именем 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>
9
ответ дан 26 November 2019 в 19:17
поделиться

I like to use a rolling file appender to write the logging info to a file. My log4j properties file typically looks something like this. I prefer this way since I like to make package specific logging in case I need varying degrees of logging for different packages. Only one package is mentioned in the example.

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
3
ответ дан 26 November 2019 в 19:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: