2014-12-22 2 views
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 

답변

0
/** 
* 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); 
} 

위의 코드를 의미 로거 Level.OFF 이상의 메시지를 허용하도록 구성되는 경우,이 이벤트 로그. Level.OFF가 가능한 최저 수준이므로 모든 메시지가 전달됩니다.

+0

답장에 따라 PrivateConfig 클래스에서 응답을 찾고 필터 메소드는 intLevel> = level.intLevel();을 반환합니다. ,이 intLevel은 LoggerConfing 레벨이라고 생각합니다.이 intLevel allways> = Level.OFF.intLevel(), 감사합니다 !! – john