2017-12-13 26 views
0

Log4j 1.2.15를 사용해야한다는 말을 앞에 쓰겠습니다. 안타깝게도 업그레이드를 제안하지 마십시오. 그러나 엑스트라 동반자 버전 1.1에 액세스 할 수 있습니다.Log4j 1.2.15 ExpressionFilter regex

ExpressionFilter을 사용하여 하나 이상의 '-'기호 뒤에 0-9의 숫자가 오는 메시지를 일치 시키려고합니다. 예를 들어 : -03928474 또는 --27646

편집 : 전체 문자열의 예 : 나는이 부분을 일치시킬 <ClassName---0182364759> xxx this is a debug message

.

나는 다음과 같은 표현을 사용하고 있습니다 : MSG LIKE [-]{1,}[0-9]{1,}

이것은 내가 시도 모든 정규식 사이트 구축을 기반으로 내 요구에 부응해야한다. 참고로 [0-9]{1,} 대신 \d{1,}을 시도했지만 Log4j는 \ d를 표현식에서 제거합니다 (디버그가 켜져 있음).

Appender의 다른 ExpressionFilters가 예상대로 작동하므로 Appender의 구조에 문제가 있다고 생각하지 않습니다. ,

<filter class="org.apache.log4j.filter.ExpressionFilter"> 
    <param name="Expression" value="(MSG LIKE [-]{1,}[0-9]{1,})" /> 
    <param name="AcceptOnMatch" value="true" /> 
</filter> 

을 같은 펜더의 다음 줄에 사용할 수 있습니까 :

은 작동하지 않습니다 하나입니다

<filter class="org.apache.log4j.filter.ExpressionFilter"> 
    <param name="Expression" value="(LEVEL >= WARN)" /> 
    <param name="AcceptOnMatch" value="true" /> 
</filter> 

이것은 XML로 지정해야합니다.

Log4j 1.2가 정규식을 처리하는 방식의 특성에 익숙한 사람이나 내가 잘못한 곳을 지적 할 수있는 사람은 누구나 알고 있습니까?

+0

'\ d '대신'[0-9]'를 사용하는 것은 이해할 수 있지만'+'대신'{1,}'을 사용하는 것은 어리석은 일입니다. 또한, 왜 대괄호 안에'-'를 넣을지 모르겠습니다. 어쨌든, 대답에 입력 문자열 중 일부를 제공 할 수 있습니까? 우리가 당신이 어울리는 것을 모를 때 문제를 디버그하기는 어렵습니다. – CAustin

+0

나는 이미 예제를 포함했다 : "예 :'-03928474' 또는'--27646' 등." –

+0

전체 라인입니까? 당신의 패턴에는'MSG LIKE ... '가 포함되어 있습니다. – CAustin

답변

0

좋아, 그래서 내가 부분적으로 만 문자열과 일치 싶었 반면 Log4j의 1.2에서 LIKE 규칙이 전체 문자열과 일치 matcher.matches()를 사용하는 것으로 나타났다.

.*-+[0-9]+.*

이것은 전에 내가 원하는 부분 경기 후 비 개행 문자의 번호와 일치 다음과 같이

솔루션

이었다.