Вы могли бы сделать уровень трассировки корневой регистратор (все сообщения) и поставить ThresholdFilter на консоли, так что только некоторые сообщения отображаются на консоли.
Эта конфигурация регистрирует только сообщения ERROR на консоли и одновременно регистрирует все сообщения (TRACE, DEBUG, INFO, ERROR ...) в файле debug.txt. Сообщения об ошибках и выше сообщения регистрируются как в консоли и в файле:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="ERROR">
<appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
</Console>
<File name="DEBUG_FILE" fileName="debug.txt">
<PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
</File>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="CONSOLE" />
<appender-ref ref="DEBUG_FILE" />
</root>
</loggers>
</configuration>
Кстати, следует помнить, что ваш макет шаблона содержит шаблоны преобразования, которые требуют информации о местоположении (% C,% F и% L, если быть точным). Это означает, что для каждого сообщения журнала log4j2 необходимо сделать снимок стека, а затем пройти трассировку стека, чтобы найти класс и метод, которые выполняли ведение журнала.
Это очень, очень медленно.
Ведение журнала будет в 2-5 раз медленнее для синхронного ведения журнала и в 4-20 раз медленнее для асинхронного ведения журнала.
Если производительность не проблема, это не имеет значения, но это определенно то, о чем нужно знать. Лично я просто использую% c (имя регистратора), и сообщения журнала моего приложения достаточно уникальны, чтобы я мог быстро найти, откуда появилось сообщение. Только мои 2 цента.
--- обновление 2013-04-27 --- С тех пор я научился более простому способу сделать это: вы можете установить уровень на appender-ref.
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="debug">
<appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p %c{2} - %m%n" /> <!--without location-->
</Console>
<File name="DEBUG_FILE" fileName="debug.txt">
<PatternLayout pattern="%d %-5p %c{2} - %m%n" />
</File>
</appenders>
<loggers>
<root level="debug">
<appender-ref ref="CONSOLE" level="ERROR" />
<appender-ref ref="DEBUG_FILE" />
</root>
</loggers>
</configuration>
Ваш обновленный файл conf не работал для меня, но оригинал прошел отлично. Благодарю. – melwil