0
, 내가 을 이해할 수 없다 사용합니다.log4J2 EventLogger 내가 EventLogger 소스 코드를 log4j2 읽어 Level.OFF
EventLogger.java
package org.apache.logging.log4j;
public final class EventLogger {
/**
* Log events with a level of ALL.
* @param msg The event StructuredDataMessage.
*/
public static void logEvent(final StructuredDataMessage msg) {
LOGGER.logIfEnabled(FQCN, Level.OFF, EVENT_MARKER, msg, null);
}
TestEventLogger.java
public class TestEventLogger {
private static final String CONFIG = "log4j2-eventLogger.xml";
private static Logger logger;
@Before
public void setup() {
System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,CONFIG);
logger = LogManager.getLogger();
}
@Test
public void structuredData() {
ThreadContext.put("loginId", "JohnDoe");
ThreadContext.put("ipAddress", "192.168.0.120");
ThreadContext.put("locale", Locale.US.getDisplayName());
final StructuredDataMessage msg = new StructuredDataMessage("[email protected]", "Transfer Complete", "Audit");
msg.put("ToAccount", "123456");
msg.put("FromAccount", "123457");
msg.put("Amount", "200.00");
EventLogger.logEvent(msg);
logger.debug(msg);
ThreadContext.clearMap();
}
log4j2-eventLogger.xml
<configuration status="error">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{yyyy-mm-dd HH:mm:ss.SSS}] %-5level %c{1} - %msg %n%n" />
</Console>
</appenders>
<loggers>
<root level="ERROR">
<appender-ref ref="Console" />
</root>
</loggers>
콘솔
[2014-41-22 14:41:58.568] OFF EventLogger - Audit [[email protected] Amount="200.00" FromAccount="123457" ToAccount="123456"] Transfer Complete
답장에 따라 PrivateConfig 클래스에서 응답을 찾고 필터 메소드는 intLevel> = level.intLevel();을 반환합니다. ,이 intLevel은 LoggerConfing 레벨이라고 생각합니다.이 intLevel allways> = Level.OFF.intLevel(), 감사합니다 !! – john