Как указать уровень ведения журнала для одного класса

У меня есть цель муравья, которая вызывает несколько классов, чтобы сделать несколько вещей. Он использует файл "logging.properties" для определения уровней ведения журнала и обработчиков.

handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.pattern=logs/ant-logging.log

# Write 10MB before rotating this file
java.util.logging.FileHandler.limit=10000000

# Number of rotating files to be used
java.util.logging.FileHandler.count=4
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

.level=INFO 

Теперь один из java-файлов, которые он вызывает, занимает огромное количество времени для завершения. У меня нет доступа к этому классу, поэтому я хочу установить определенный уровень ведения журнала для этого конкретного класса, чтобы попытаться понять, что не так с моей реализацией.

Я не хочу изменять глобальный уровень ведения журнала, я просто хочу добавить определенный уровень к определенному классу, как я могу этого достичь?

2 ответа

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

В вашем файле свойств вы можете указать имя логгера:

Предполагается, что все свойства, имена которых заканчиваются на ".level", определяют уровни журналов для регистраторов. Таким образом, "foo.level" определяет уровень журнала для регистратора с именем "foo" и (рекурсивно) для любого из его дочерних элементов в иерархии именования. Уровни журнала применяются в порядке, определенном в файле свойств. Таким образом, настройки уровня для дочерних узлов в дереве должны следовать после настроек для их родителей. Имя свойства ".level" можно использовать для установки уровня корня дерева.

Например:

foo.level=FINE

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

Я верю, что вы можете указать по классу и войти в свой конкретный appender

Например, скажем, ваш класс com.test.FaultyClass

Тогда вы можете положить

log4j.logger.com.test.FaultyClass=DEBUG, myappender

Это приведет к тому, что вывод FaultyClass не будет отображаться в других приложениях.

log4j.additivity.com.test.FaultyClass=false  

Теперь вы настроили myappender как вам нравится

log4j.appender.myappender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myappender.datePattern='-'dd'.log'
log4j.appender.myappender.layout=org.apache.log4j.PatternLayout
Другие вопросы по тегам