1. Список фільтрів
Логгер дозволяє дуже круто налаштувати фільтрацію повідомлень. Для цього в нього є пара десятків фільтрів із різними параметрами. Нижче в таблиці наведено найпопулярніші з них:
Фільтри | Опис | |
---|---|---|
1 | BurstFilter | Дозволяє керувати частотою повідомлень за секунду для вказаного рівня логування. |
2 | CompositeFilter | Дозволяє вказати кілька послідовних фільтрів. |
3 | DynamicThresholdFilter | Дозволяє вмикати детальне логування, якщо у лозі зустрілася певна інформація. |
4 | MapFilter | Дозволяє побудувати складний логічний вираз для фільтра з кількох параметрів. |
5 | MarkerFilter | Дозволяє фільтрувати повідомлення за тегами, тег потрібно попередньо додати під час логування події. |
6 | RegexFilter | Дозволяє встановити маску – регулярний вираз. |
7 | StructuredDataFilter | Дозволяє фільтрувати повідомлення щодо наявності в них певних даних. |
8 | ThreadContextMapFilter | Дозволяє керувати фільтрами на основі даних, які взято з контексту нинішнього потоку. |
9 | ThresholdFilter | Керування логуванням на основі рівня повідомлення лога. |
10 | TimeFilter | Дозволяє вмикати та вимикати фільтри у певний час. |
Нижче ми розповімо лише про три з них. Більш детально ви можете ознайомитись з цими фільтрами на їхньому офіційному сайті.
2. TimeFilter
Фільтр TimeFilter
дозволяє вмикати та вимикати фільтри у певний час, має 5 параметрів:
1 | start | Час старту логування у форматі HH:mm:ss |
2 | end | Час вимкнення логування у форматі HH:mm:ss |
3 | timezone | Вказує часову зону |
4 | onMatch | Як логувати, якщо умова фільтра є істинною. Можливо ACCEPT , DENY або NEUTRAL . За замовчуванням NEUTRAL . |
5 | onMismatch | Як логувати, якщо умова фільтра помилкова. Можливо 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>
3. RegexFilter
Фільтр RegexFilter
дозволяє встановити маску (регулярний вираз) для фільтрації повідомлень. Цей фільтр має 4 параметри:
1 | regex | Вказує регулярний вираз – маску, яка застосовується для фільтрації повідомлень. HH:mm:ss |
2 | useRawMsg | Маска застосовується у повідомленні до форматування (true) або після форматування (false) |
3 | onMatch | Як логувати, якщо умова фільтра є істинною. Можливо ACCEPT , DENY або NEUTRAL . За замовчуванням – NEUTRAL . |
4 | onMismatch | Як логувати, якщо умова фільтра помилкова. Можливо ACCEPT , DENY або NEUTRAL . За замовчуванням – NEUTRAL . |
Давайте налаштуємо фільтр, який пропускатиме лише повідомлення, що містять слово javarush. Приклад із повною конфігурацією фільтра нижче:
<?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=".* javarush .*" 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>
4. ThresholdFilter
Фільтр ThresholdFilter дозволяє налаштувати фільтрацію за рівнем повідомлень. Він має лише 3 параметри:
1 | level | Вказує ім'я рівня логування повідомлень: ERROR , DEBUG , … |
2 | onMatch | Як логувати, якщо умова фільтра є істинною. Можливо ACCEPT , DENY або NEUTRAL . За замовчуванням – NEUTRAL . |
3 | onMismatch | Як логувати, якщо умова фільтра помилкова. Можливо 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>
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ