Маркеры в log4j2 работают таким образом:
package org.so.log4j2.test;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;
public class Log4j2Test {
public static void main(String[] args)
{
Logger logger = LogManager.getLogger("Test");
Marker LOG4JDBC_OTHER = MarkerManager.getMarker("LOG4JDBC_OTHER");
logger.info("Line to show.");
logger.info(LOG4JDBC_OTHER, "Line to hide");
}
}
С ниже log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<MarkerFilter marker="LOG4JDBC_OTHER" onMatch="DENY" onMismatch="NEUTRAL"/>
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
<Logger name="Test" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
</Configuration>
Выход:
12:37:22.416 [main] INFO Test - Line to show.
Маркеры в Logback работают так:
package org.so.logback.test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;
public class LogbackTest {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger("Test");
Marker LOG4JDBC_OTHER = MarkerFactory.getMarker("LOG4JDBC_OTHER");
logger.info("Line to show");
logger.info(LOG4JDBC_OTHER, "Line to hide");
}
}
С этим logback.xml
<?xml version="1.0" ?>
<configuration>
<property name="log.folder" value="./log"/>
<turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter">
<Marker>LOG4JDBC_OTHER</Marker>
<OnMatch>DENY</OnMatch>
<OnMismatch>NEUTRAL</OnMismatch>
</turboFilter>
<appender class="ch.qos.logback.core.ConsoleAppender" name="CONSOLE">
<encoder>
<pattern>[%p] [%thread] %logger - %msg%n</pattern>
</encoder>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="CONSOLE"/>
</root>
<logger name="Test" additivity="false">
<level value="INFO" />
<appender-ref ref="CONSOLE"/>
</logger>
</configuration>
Выход:
[INFO] [main] Test - Line to show
Надеется, что это помогает.
P.s. возможно аддитивность флаг снова? ..
Спасибо за быстрый ответ. Я уже пробовал это, прежде чем публиковать свой вопрос, и это не сработало для меня. Я обновил свой вопрос. Я не уверен, могу ли я просто использовать имя маркера log4j2, которое использует библиотека. – devmake
Ваше понимание верное. Зависимость '' 'log4jdbc-log4j2''' использует API Log4j 2 и я использую' '' spring-boot-starter''' с '' 'logback'''. Я попытался добавить зависимость от '' 'org.apache.logging.log4j: log4j-to-slf4j: 2.5''', но он ничего не фильтрует, я все еще вижу все сообщения в консоли. – devmake
Это странно. Глядя на код, log4j-to-slf4j пытается преобразовать маркеры: http://logging.apache.org/log4j/2.x/log4j-to-slf4j/xref/org/apache/logging/slf4j/SLF4JLogger .html # L92 –