log4j.properties文件示例

时间:2020-02-23 14:37:19  来源:igfitidea点击:

在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 Appenders

我们在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.theitroad.log4j" additivity="false">
	<level value="WARN" 
	<appender-ref ref="file" 
	<appender-ref ref="console" 
</logger>

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

它们将在属性文件中定义为" log4j.logger.{logger_name}"。
这些值包含日志记录级别和要使用的附加程序列表。

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

Log4j记录器可加性

上面的logger xml配置中显示了可加性用法,它是logger元素的属性。
以下是在log4j属性文件配置中以" log4j.additivity.{logger_name}"使用它的方法。

#setting additivity
log4j.additivity.com.theitroad.log4j=false
log4j.additivity.com.theitroad.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.theitroad.log4j=WARN, file, console
log4j.logger.com.theitroad.log4j.logic=DEBUG, file, console

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

Log4j PropertyConfigurator

PropertyConfigurator用于配置log4j设置。
如果文件名为log4j.properties并且在项目类路径中,则为可选。
在使用记录器之前,我们必须对其进行配置。

这是一个简单的程序,显示了如何配置和使用log4j日志记录。

package com.theitroad.log4j.main;

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

import com.theitroad.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文件中看到如下生成的日志。

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

请注意,由于最低记录级别设置为WARN,因此未打印调试和信息记录器。