웹 서버가 있고 여러 사용자가 로그인했습니다. 우리는 일반적으로 로그 레벨을 ERROR 또는 INFO 레벨로 지정합니다. 그러나 때로는 디버깅 목적으로 로그를 볼 필요가 있습니다. 런타임에 설정하려면 one way이 있지만 트래픽이 많은 경우이 프로세스가 좋지 않습니다. 중요 로그가 누락 될 수 있으며이를 유지하는 데 필요한 시간을 알 수 없습니다. 나는 log4j v1.2에 랩퍼를 작성했는데, 이는 userid가 TestUsersList에 속하면 레벨 검사를 무시한다. 따라서 특정 사용자 [스레드]에 대해서만 모든 로그를 엽니 다. 스 니펫은 아래에 있습니다.Log4j2, 런타임시 스레드 수준의 스레드 수준을 설정하십시오
public void trace(Object message) {
Object diagValue = MDC.get(LoggerConstants.IS_ANALYZER_NUMBER);
if (valueToMatch.equals(diagValue)) { // Some condition to check test number
forcedLog(FQCN, Level.TRACE, message, null);
return;
}
if (repository.isDisabled(Level.TRACE_INT))
return;
if (Level.TRACE.isGreaterOrEqual(this.getEffectiveLevel()))
forcedLog(FQCN, Level.TRACE, message, null);
}
이제 log4j2로 이동 했으므로이 래퍼를 다시 작성하고 싶지 않습니다. log4j2가 제공하는 inbuilt 기능이 있습니까?