CodeGym/Java курс/Модул 3/Филтри за журнал в Log4j

Филтри за журнал в Log4j

На разположение

5.1 Списък с филтри

Логерът ви позволява много готино да конфигурирате филтрирането на съобщения. За да направи това, той има няколко дузини филтри с всяHowви параметри. Таблицата по-долу показва най-популярните.

Филтри Описание
1 BurstFilter Позволява ви да контролирате честотата на съобщенията в секунда за дадено ниво на регистриране.
2 CompositeFilter Позволява ви да зададете множество последователни филтри.
3 DynamicThresholdFilter Позволява ви да активирате подробно регистриране, ако определена информация бъде намерена в регистъра.
4 MapFilter Позволява ви да изградите сложен логически израз за филтъра от няколко параметъра.
5 MarkerFilter Позволява ви да филтрирате съобщения по тагове, етикетът първо трябва да бъде добавен по време на регистрирането на събитията.
6 RegexFilter Позволява ви да зададете маска - регулярен израз.
7 StructuredDataFilter Позволява ви да филтрирате съобщенията според наличието на определени данни в тях.
8 ThreadContextMapFilter Позволява ви да управлявате филтри въз основа на данни, взети от контекста на текущата нишка.
9 ThresholdFilter Управлява регистрирането въз основа на нивото на регистрационните съобщения.
10 TimeFilter Позволява ви да включвате и изключвате филтрите в определени часове.

По-долу ще говорим само за три от тях. Можете да научите повече за тези филтри на официалния им уебсайт .

5.2 Филтър за време

Филтърът TimeFilterви позволява да включвате и изключвате филтри в определено време, има 5 параметъра:

1 започнете Начален час на регистриране във форматаHH:mm:ss
2 край Време за излизане във форматаHH:mm:ss
3 часова зона Задава часовата зона.
4 onMatch Как да влезете, ако conditionто на филтъра е вярно . Може би ACCEPT, DENYor NEUTRAL. По подразбиране NEUTRAL.
5 onMismatch Как да влезете, ако conditionто на филтъра е невярно . Може би ACCEPT, DENYor 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

Филтърът RegexFilterви позволява да зададете маска (регулярен израз) за филтриране на съобщения. Този филтър има 4 параметъра:

1 регулярен израз Указва регулярен израз - маска, която се използва за филтриране на съобщения.HH:mm:ss
2 useRawMsg Маската се прилага в съобщението преди форматиране (true) or след форматиране (false)
3 onMatch Как да влезете, ако conditionто на филтъра е вярно . Може би ACCEPT, DENYor NEUTRAL. По подразбиране NEUTRAL.
4 onMismatch Как да влезете, ако conditionто на филтъра е невярно . Може би ACCEPT, DENYor 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

Филтърът ThresholdFilter ви позволява да конфигурирате филтриране по ниво на съобщението. Има само 3 параметъра:

1 ниво Задава името на нивото на регистриране на съобщенията: ERROR, DEBUG, …
2 onMatch Как да влезете, ако conditionто на филтъра е вярно . Може би ACCEPT, DENYor NEUTRAL. По подразбиране NEUTRAL.
3 onMismatch Как да влезете, ако conditionто на филтъра е невярно . Може би ACCEPT, DENYor 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>
Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари