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>