Как указать уровень ведения журнала для одного класса
У меня есть цель муравья, которая вызывает несколько классов, чтобы сделать несколько вещей. Он использует файл "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