Рубрики
Без рубрики

Пример Уровней Log4j – Порядок, Приоритет, Пользовательские Фильтры

Если вы использовали log4j, вы заметите, что существует множество методов регистрации сообщений. Например: logger.trace(“Мое сообщение в журнале”); logger.debug(“Мой журнал

Автор оригинала: Pankaj Kumar.

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

logger.trace("My Log message");
logger.debug("My Log message");
logger.info("My Log message");

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

Уровни Log4j

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

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

ВСЕ и ВЫКЛЮЧЕНО являются специальными уровнями регистрации и должны использоваться в экстремальных ситуациях. Я никогда не использовал их лично ни в какой момент времени.

Порядок/Приоритет уровня Log4j

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

Трассировка < Отладка < Информация < Предупреждение < Ошибка < Фатальная.

Когда мы определяем уровень регистратора, все, что имеет более высокий приоритет, также печатается. Например, если уровень регистратора-ИНФОРМАЦИЯ, то журналы отладки не будут печататься, но журналы предупреждений будут печататься из-за более высокого приоритета.

Фильтры Log4j

Допустим, мы хотим регистрировать только ИНФОРМАЦИЮ и ФАТАЛЬНЫЕ события, но не ПРЕДУПРЕЖДЕНИЯ и события ОШИБОК. В этих сценариях мы можем воспользоваться помощью фильтров log4j. Мы можем расширить org.apache.log4j.spi.Filter класс и реализовать его решение(событие LoggingEvent) метод для предоставления пользовательских возможностей фильтрации.

package com.journaldev.log4j.filters;

import org.apache.log4j.Level;
import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;

public class MyLog4jFilter extends Filter {

	/**
	 * My custom filter to only log INFO and FATAL events
	 */
	@Override
	public int decide(LoggingEvent event) {
		if(event.getLevel() == Level.INFO || event.getLevel() == Level.FATAL)
		return ACCEPT;
		else return DENY;
	}

}

Над пользовательским фильтром будет регистрироваться только информация и ФАТАЛЬНЫЕ события, ниже приведена конфигурация XML log4j для этого.









	
	
		
	
	



	
	



	
	



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

package com.journaldev.log4j.main;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;

public class Log4jExample {

	static {
		init();
	}

	private final static Logger logger = Logger.getLogger(Log4jExample.class);

	public static void main(String[] args) {
		logger.trace("My Trace Log");
		logger.debug("My Debug Log");
		logger.info("My Info Log");
		logger.warn("My Warn Log");
		logger.error("My error log");
		logger.fatal("My fatal log");
	}

	/**
	 * method to init log4j configurations
	 */
	private static void init() {
		DOMConfigurator.configure("log4j.xml");
	}

}

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

INFO  Log4jExample - My Info Log
FATAL Log4jExample - My fatal log

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


	
	
		
	
	
		
        	
	
	
		
        	
	
	

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

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

Список литературы :