Поиск по сайту:

Пример файла log4j.properties


В учебнике по log4j мы увидели, как использовать конфигурацию на основе log4j xml. Но log4j.xml является подробным, поэтому структура log4j также предоставляет возможность чтения конфигурации из файла свойств. Поскольку файл свойств не имеет определенной схемы для проверки, мы должны быть более осторожны с ним. Сегодня мы увидим, как конфигурации XML могут быть преобразованы в конфигурации на основе свойств.

Корневой регистратор

Корневой регистратор используется, когда нет совпадения с регистратором. Он определен, как показано ниже в XML.

<root>
	<priority value="DEBUG" />
	<appender-ref ref="file" />
	<appender-ref ref="console" />
</root>

Его можно определить в файле свойств, как показано ниже.

log4j.rootLogger=DEBUG, file, console

Первое значение в списке, разделенном запятыми, — это значение корневого уровня ведения журнала. Все остальные значения являются добавочными.

Приложения Log4j

У нас может быть несколько приложений в log4j. Ниже приведены два приложения, одно для ведения журнала консоли, а другое для файла.

<!-- console 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>
</appender>

<!-- rolling file appender -->
<appender name="file" class="org.apache.log4j.RollingFileAppender">
	<param name="File" value="logs/main.log" />
	<param name="Append" value="true" />
	<param name="ImmediateFlush" value="true" />
	<param name="MaxFileSize" value="10MB" />
	<param name="MaxBackupIndex" value="5" />

	<layout class="org.apache.log4j.PatternLayout">
		<param name="ConversionPattern" value="%d %d{Z} [%t] %-5p (%F:%L) - %m%n" />
	</layout>
</appender>

В файле log4j.properties они будут определены, как показано ниже.

#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n

#Define rolling file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/main.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n

Таким образом, формат приложения файла свойств log4j — log4j.appender.{appender_name}.{appender_config}. Обратите внимание, что конфигурации приложений, такие как MaxFileSize, MaxBackupIndex, такие же, как и в файле конфигурации XML.

Регистраторы Log4j

Как и в случае с приложениями, у нас может быть несколько регистраторов. Например, конфигурация на основе xml;

<logger name="com.journaldev.log4j" additivity="false">
	<level value="WARN" />
	<appender-ref ref="file" />
	<appender-ref ref="console" />
</logger>

<logger name="com.journaldev.log4j.logic" additivity="false">
	<level value="DEBUG" />
	<appender-ref ref="file" />
</logger>

Они будут определены в файле свойств как log4j.logger.{logger_name}. Значения содержат уровень ведения журнала и список используемых приложений.

#Define loggers
log4j.logger.com.journaldev.log4j=WARN, file, console
log4j.logger.com.journaldev.log4j.logic=DEBUG, file, console

Аддитивность регистратора Log4j

Использование аддитивности показано в приведенной выше конфигурации xml регистратора, это атрибут элемента регистратора. Ниже показано, как использовать его в конфигурации файла свойств log4j как log4j.additivity.{logger_name}.

#setting additivity
log4j.additivity.com.journaldev.log4j=false
log4j.additivity.com.journaldev.log4j.logic=false

Основываясь на вышеизложенном, ниже мой окончательный файл log4j.properties.

#Define root logger options
log4j.rootLogger=DEBUG, file, console

#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n

#Define rolling file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/main.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n

#Define loggers
log4j.logger.com.journaldev.log4j=WARN, file, console
log4j.logger.com.journaldev.log4j.logic=DEBUG, file, console

#setting additivity
log4j.additivity.com.journaldev.log4j=false
log4j.additivity.com.journaldev.log4j.logic=false

Конфигуратор свойств Log4j

PropertyConfigurator используется для настройки параметров log4j. Это необязательно, если имя файла log4j.properties и оно находится в пути к классам проекта. Мы должны настроить его перед использованием регистратора. Вот простая программа, показывающая, как настроить и использовать ведение журнала log4j.

package com.journaldev.log4j.main;

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

import com.journaldev.log4j.logic.MathUtils;

public class Log4jExample {

	static{
		init();
	}
	
	private final static Logger logger = Logger.getLogger(Log4jExample.class);
	
	public static void main(String[] args) {

		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() {
		PropertyConfigurator.configure("log4j.properties");
	}

}

Когда он будет выполнен, вы попадете ниже в журнал консоли.

WARN  Log4jExample - My Warn Log
ERROR Log4jExample - My error log
FATAL Log4jExample - My fatal log

В то же время вы увидите, что журналы создаются в файле main.log, как показано ниже.

2016-05-14 00:34:11,994 +0530 [main] WARN  (Log4jExample.java:20) - My Warn Log
2016-05-14 00:34:11,995 +0530 [main] ERROR (Log4jExample.java:21) - My error log
2016-05-14 00:34:11,995 +0530 [main] FATAL (Log4jExample.java:22) - My fatal log

Обратите внимание, что журнал отладки и информации не распечатываются, потому что минимальный уровень ведения журнала установлен как ПРЕДУПРЕЖДЕНИЕ. Это все, что касается примера использования файла свойств log4j. Удачной регистрации!