Сервис для
сео - оптимизаторов

Найди ошибки на сайте
Ошибки мешают продвижению сайта
Исправь ошибки на сайте
Сайт без ошибок продвигать легче
Получи новых клиентов
Новые клиенты принесут больше прибыль

Пример уровней Log4j - порядок, приоритет, пользовательские фильтры - JournalDev

  1. Уровни Log4j
  2. Уровень / приоритет уровня Log4j
  3. Log4j Filters
  4. О Панкадж

Если вы использовали log4j, вы заметите, что существует множество методов для регистрации сообщений. Например:


копия

logger.trace («Сообщение моего журнала»); logger.debug («Сообщение моего журнала»); logger.info («Мой журнал сообщений»);

На самом деле они соответствуют уровням log4j .

Уровни Log4j

Log4j предоставляет много уровней ведения журнала. Ниже приведен полный список.

  1. TRACE : уровень TRACE обозначает более мелкие информационные события, чем DEBUG.
  2. ОТЛАДКА : Уровень ОТЛАДКИ обозначает детализированные информационные события, которые наиболее полезны для отладки приложения.
  3. ИНФОРМАЦИЯ : Уровень ИНФО обозначает информационные сообщения, которые освещают ход выполнения приложения на уровне детализации.
  4. ПРЕДУПРЕЖДЕНИЕ . Уровень ПРЕДУПРЕЖДЕНИЕ обозначает потенциально опасные ситуации.
  5. ОШИБКА : уровень ОШИБКА обозначает события ошибки, которые могут все еще позволить приложению продолжать работать.
  6. FATAL : уровень FATAL обозначает очень серьезные события ошибок, которые, вероятно, приведут к прекращению работы приложения.
  7. ALL : ALL имеет самый низкий возможный ранг и предназначен для включения всей регистрации.
  8. ВЫКЛ : ВЫКЛ имеет наивысший возможный ранг и предназначен для отключения регистрации.

ALL и OFF являются специальными уровнями регистрации и должны использоваться в экстремальных ситуациях. Я никогда не использовал их лично в любой момент времени.

Уровень / приоритет уровня Log4j

Трассировка имеет самый низкий приоритет, а Fatal - самый высокий. Ниже приведен порядок журналирования log4j.

Trace <Debug <Info <Warn <Error <Fatal.

Когда мы определяем уровень ведения журнала, все, что имеет журналы с более высоким приоритетом, также печатается. Например, если уровень ведения журнала - INFO, журналы отладки не будут напечатаны, а журналы предупреждений будут напечатаны из-за более высокого приоритета.

Log4j Filters

Допустим, мы хотим регистрировать только события INFO и FATAL, но не события WARN и ERROR. В этих случаях мы можем воспользоваться помощью log4j Filters. Мы можем расширить класс org.apache.log4j.spi.Filter и реализовать метод его решения (событие LoggingEvent) для обеспечения пользовательских возможностей фильтрации.


копия

пакет com.journaldev.log4j.filters; import org.apache.log4j.Level; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; открытый класс MyLog4jFilter расширяет фильтр {/ ** * Мой пользовательский фильтр, чтобы регистрировать только события INFO и FATAL * / @Override public int решить (событие LoggingEvent) {if (event.getLevel () == Level.INFO || event.getLevel ( ) == Level.FATAL) return ACCEPT; иначе верните ДЕНИ; }}

Над настраиваемым фильтром регистрируются только события INFO и FATAL, ниже приведена конфигурация XML log4j для этого.


копия

<? xml version = "1.0&quot; encoding = "UTF-8"?> <! DOCTYPE log4j: конфигурация СИСТЕМА "log4j.dtd"> <log4j: конфигурация xmlns: log4j = "http://jakarta.apache.org/log4j / "debug =" false "> <! - appender -> <appender name =" console "class =" org.apache.log4j.ConsoleAppender "> <param name =" Target "value =" System.out " /> <layout class = "org.apache.log4j.PatternLayout"> <param name = "ConversionPattern" value = "% - 5p% c {1} -% m% n" /> </ layout> <фильтр класса = "com.journaldev.log4j.filters.MyLog4jFilter" /> </ appender> <logger name = "com.journaldev.log4j" additivity = "false"> <уровень значения = "TRACE" /> <appender-ref ref = " console "/> </ logger> <root> <priority value =" DEBUG "/> <appender-ref ref =" console "/> </ root> </ log4j: конфигурация>

Обратите внимание на использование класса Filter в консоли appender. Ниже приведен простой класс, занимающийся базовым ведением журнала.


копия

пакет com.journaldev.log4j.main; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.xml.DOMConfigurator; открытый класс Log4jExample {static {init (); } private final static Logger logger = Logger.getLogger (Log4jExample.class); public static void main (String [] args) {logger.trace ("Мой журнал трассировки"); logger.debug («Мой журнал отладки»); logger.info («Мой информационный журнал»); logger.warn («Мой журнал предупреждений»); logger.error («Мой журнал ошибок»); logger.fatal («Мой роковой журнал»); } / ** * метод инициализации конфигураций log4j * / private static void init () {DOMConfigurator.configure ("log4j.xml"); }}

При запуске этой программы она генерирует ниже журналы в консоли.


копия

ИНФОРМАЦИЯ Log4jExample - Мой журнал информации FATAL Log4jExample - Мой журнал смерти

Мы можем сделать еще более сложную фильтрацию, создав наши собственные классы фильтров. Обратите внимание, что для этого конкретного случая мы можем использовать классы org.apache.log4j.varia.LevelMatchFilter и org.apache.log4j.varia.DenyAllFilter, как показано в приведенном ниже приложении.


копия

<appender name = "console" class = "org.apache.log4j.ConsoleAppender"> <param name = "Target" value = "System.out" /> <layout class = "org.apache.log4j.PatternLayout"> < param name = "ConversionPattern" value = "% - 5p% c {1} -% m% n" /> </ layout> <filter class = "org.apache.log4j.varia.LevelMatchFilter"> <param name = " LevelToMatch "value =" INFO "/> <param name =" AcceptOnMatch "value =" true "/> </ filter> <filter class =" org.apache.log4j.varia.LevelMatchFilter "> <param name =" LevelToMatch " value = "FATAL" /> <param name = "AcceptOnMatch" value = "true" /> </ filter> <filter class = "org.apache.log4j.varia.DenyAllFilter" /> </ appender>

У нас также есть класс org.apache.log4j.varia.LevelRangeFilter, который можно использовать для отклонения сообщений с приоритетами за пределами определенного диапазона.

Это все для быстрого понимания уровней и фильтров log4j.

Рекомендации :

О Панкадж

Если вы зашли так далеко, значит, вам понравилось то, что вы читаете. Почему бы не достичь немного больше и связаться со мной напрямую на facebook или же щебет , Я хотел бы услышать ваши мысли и мнения о моих статьях напрямую.

Недавно я тоже начал создавать видеоуроки, так что посмотрите мои видео на YouTube ,

Quot; encoding = "UTF-8"?