2017-11-20 6 views

답변

2

%replace을 사용하면 Logback에서 ch.qos.logback.core.pattern.ReplacingCompositeConverter을 발생시킵니다. 이 변환기는 패턴 레이아웃이 시작될 때, 즉 Logback이 자체적으로 구성 될 때 시작된 으로 인스턴스화됩니다.

public void start() { 
    ... 
    regex = optionList.get(0); 
    pattern = Pattern.compile(regex); 
    replacement = optionList.get(1); 
    super.start(); 
} 

그리고 Logback은 ReplacingCompositeConverter.transform()되는 %replace, 위임을 포함하는 패턴을 사용 로그 엔트리를 발견 할 때마다이 패턴을 적용 :

protected String transform(E event, String in) { 
    ... 
    return pattern.matcher(in).replaceAll(replacement); 
} 

ReplacingCompositeConverter.start() 방법으로 패턴을 컴파일 따라서 Logback은 이 아니며은 "each log statement printed"에 대한 패턴을 %replace으로 컴파일합니다.

+0

'Deleting to ReplacingCompositeConverter.start()', 확실히'ReplacingCompositeConverter.transform() '에 위임합니까? – ptomli

+0

D' 오 복사 - 파스타 오류. 나는 올바른 메소드 문장을 포함하고 있지만 그것을'start()'메소드라고 부른다. 그 점을 알려 주셔서 감사합니다. – glytching