Ответ 1
Мне никогда не нужно было это делать, но поскольку я однажды прочитал Log4J - The Complete Manual, я надеюсь, что эти указатели помогут.
- Напишите свой собственный фильтр, расширив org.apache.log4j.spi.Filter
- Переопределить решить метод
- Используйте loggingEvent.getLevel(), чтобы определить уровень запуска журнала.
-
Напишите следующую логику в решении
if(event.getLevel() == Level.INFO || event.getLevel() == Level.FATAL) return ACCEPT; return DENY;
Этот фильтр будет принимать все журналы, которые являются либо INFO, либо FATAL. Вы можете стать более креативными.
Обратите внимание, что я не тестировал этот код. Это всего лишь ориентир, надеюсь, что это поможет
Изменить: при поиске бит я нашел что-то, что может быть проще. Я думаю, вы можете использовать LevelMatchFilter, таким образом
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="info" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="fatal" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
обратитесь к http://wiki.apache.org/logging-log4j/Log4jXmlFormat для конфигурации XML. Существует раздел на Filter Configuration
Я не знаю, что останавливает OP при принятии этого ответа. Я только что протестировал, он работает:
Вот 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="util" class="org.apache.log4j.FileAppender">
<param name="File" value="D:/util.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="info" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="fatal" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="util" />
</root>
</log4j:configuration>
Вот код Java
DOMConfigurator.configure("log4j.xml");
Logger log = Logger.getLogger(Test.class);
log.debug("DEBUG");
log.info("INFO");
log.warn("WARN");
log.error("ERROR");
log.fatal("FATAL");
Вот результат в (как настроено) D:/util.log
main INFO test.Test - INFO
main FATAL test.Test - FATAL