5.1 필터 목록

로거를 사용하면 메시지 필터링을 매우 멋지게 구성할 수 있습니다. 이를 위해 그는 모든 종류의 매개 변수가 있는 수십 개의 필터를 가지고 있습니다. 아래 표는 가장 인기있는 것을 보여줍니다.

필터 설명
1 버스트 필터 지정된 로깅 수준에 대해 초당 메시지 빈도를 제어할 수 있습니다.
2 복합 필터 여러 순차 필터를 설정할 수 있습니다.
동적 임계값 필터 로그에서 특정 정보가 발견되면 상세 로깅을 활성화할 수 있습니다.
4 맵 필터 여러 매개변수에서 필터에 대한 복잡한 논리식을 작성할 수 있습니다.
5 마커 필터 태그로 메시지를 필터링할 수 있습니다. 태그는 먼저 이벤트 로깅 중에 추가되어야 합니다.
6 정규식 필터 마스크(정규식)를 설정할 수 있습니다.
7 구조화된 데이터 필터 특정 데이터의 존재 여부에 따라 메시지를 필터링할 수 있습니다.
8 ThreadContextMapFilter 현재 스레드의 컨텍스트에서 가져온 데이터를 기반으로 필터를 관리할 수 있습니다.
9 임계값 필터 로그 메시지 수준에 따라 로깅을 제어합니다.
10 시간 필터 특정 시간에 필터를 켜고 끌 수 있습니다.

아래에서 우리는 그들 중 세 가지에 대해서만 이야기 할 것입니다. 공식 웹 사이트 에서 이러한 필터에 대해 자세히 알아볼 수 있습니다 .

5.2 시간 필터

필터를 사용 TimeFilter하면 특정 시간에 필터를 켜고 끌 수 있으며 5개의 매개변수가 있습니다.

1 시작 형식의 로깅 시작 시간HH:mm:ss
2 로그오프 시간 형식HH:mm:ss
시간대 시간대를 설정합니다.
4 경기 중 필터 조건이 참인 경우 기록하는 방법 . 어쩌면 ACCEPT, DENY또는 NEUTRAL. 기본 NEUTRAL.
5 미스매치 필터 조건이 false 인 경우 기록하는 방법 . 어쩌면 ACCEPT, DENY또는 NEUTRAL. 기본 NEUTRAL.

매일 오전 5시에 로깅을 켜고 오전 5시 30분에 끄는 필터를 설정해 봅시다. 전체 필터 구성의 예는 다음과 같습니다.


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
        <TimeFilter start="05:00:00" end="05:30:00" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.3 정규식 필터

필터를 사용하면 RegexFilter메시지 필터링을 위한 마스크(정규식)를 설정할 수 있습니다. 이 필터에는 4개의 매개변수가 있습니다.

1 정규식 메시지를 필터링하는 데 사용되는 마스크인 정규식을 지정합니다.HH:mm:ss
2 useRawMsg 마스크는 서식 지정 전(true) 또는 서식 지정 후(false) 메시지에 적용됩니다.
경기 중 필터 조건이 참인 경우 기록하는 방법 . 어쩌면 ACCEPT, DENY또는 NEUTRAL. 기본 NEUTRAL.
4 미스매치 필터 조건이 false 인 경우 기록하는 방법 . 어쩌면 ACCEPT, DENY또는 NEUTRAL. 기본 NEUTRAL.

codegym라는 단어가 포함된 메시지만 허용하는 필터를 설정해 보겠습니다. 전체 필터 구성의 예는 다음과 같습니다.


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log"   filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
        <RegexFilter regex=".* codegym .*" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
      </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.4 임계값 필터

ThresholdFilter 필터를 사용 하면 메시지 수준별로 필터링을 구성할 수 있습니다. 3개의 매개변수만 있습니다.

1 수준 메시지 로깅 수준의 이름을 설정합니다: ERROR, DEBUG, …
2 경기 중 필터 조건이 참인 경우 기록하는 방법 . 어쩌면 ACCEPT, DENY또는 NEUTRAL. 기본 NEUTRAL.
미스매치 필터 조건이 false 인 경우 기록하는 방법 . 어쩌면 ACCEPT, DENY또는 NEUTRAL. 기본 NEUTRAL.

수준의 메시지만 허용하는 필터를 설정해 보겠습니다 DEBUG. 전체 필터 구성의 예는 다음과 같습니다.


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
           <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>