log4j.properties 文件示例

log4j 教程中,我们看到如何使用log4j xml 基于的配置,但log4j.xml 是可言的,所以log4j 框架也提供了从属性文件读取配置的选项。

根记录器

Root logger 是当没有与日志器匹配时使用的,它在 XML 中如下所定义。

1<root>
2    <priority value="DEBUG" />
3    <appender-ref ref="file" />
4    <appender-ref ref="console" />
5</root>

它可以在下面的属性文件中定义。

1log4j.rootLogger=DEBUG, file, console

Comma 分隔列表中的第一个值是根日志级值. 所有其他值都是附件。

Log4j 附件

我们可以在log4j中拥有多个附件,下面有两个附件,一个用于控制台日志,另一个用于文件。

 1<!-- console appender -->
 2<appender name="console" class="org.apache.log4j.ConsoleAppender">
 3    <param name="Target" value="System.out" />
 4    <layout class="org.apache.log4j.PatternLayout">
 5    	<param name="ConversionPattern" value="%-5p %c{1} - %m%n" />
 6    </layout>
 7</appender>
 8
 9<!-- rolling file appender -->
10<appender name="file" class="org.apache.log4j.RollingFileAppender">
11    <param name="File" value="logs/main.log" />
12    <param name="Append" value="true" />
13    <param name="ImmediateFlush" value="true" />
14    <param name="MaxFileSize" value="10MB" />
15    <param name="MaxBackupIndex" value="5" />
16
17    <layout class="org.apache.log4j.PatternLayout">
18    	<param name="ConversionPattern" value="%d %d{Z} [%t] %-5p (%F:%L) - %m%n" />
19    </layout>
20</appender>

在log4j.properties文件中,它们将如下所述。

 1#Define console appender
 2log4j.appender.console=org.apache.log4j.ConsoleAppender
 3logrj.appender.console.Target=System.out
 4log4j.appender.console.layout=org.apache.log4j.PatternLayout
 5log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n
 6
 7#Define rolling file appender
 8log4j.appender.file=org.apache.log4j.RollingFileAppender
 9log4j.appender.file.File=logs/main.log
10log4j.appender.file.Append=true
11log4j.appender.file.ImmediateFlush=true
12log4j.appender.file.MaxFileSize=10MB
13log4j.appender.file.MaxBackupIndex=5
14log4j.appender.file.layout=org.apache.log4j.PatternLayout
15log4j.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的配置;

 1<logger name="com.journaldev.log4j" additivity="false">
 2    <level value="WARN" />
 3    <appender-ref ref="file" />
 4    <appender-ref ref="console" />
 5</logger>
 6
 7<logger name="com.journaldev.log4j.logic" additivity="false">
 8    <level value="DEBUG" />
 9    <appender-ref ref="file" />
10</logger>

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

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

Log4j 登录器添加性

附加性使用在上面的logger xml配置中显示,它是logger元素的属性. 下面是如何在log4j属性文件配置中使用它作为 log4j.additivity.{logger_name}

1#setting additivity
2log4j.additivity.com.journaldev.log4j=false
3log4j.additivity.com.journaldev.log4j.logic=false

基于上面,下面是我的最终log4j.properties文件。

 1#Define root logger options
 2log4j.rootLogger=DEBUG, file, console
 3
 4#Define console appender
 5log4j.appender.console=org.apache.log4j.ConsoleAppender
 6logrj.appender.console.Target=System.out
 7log4j.appender.console.layout=org.apache.log4j.PatternLayout
 8log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n
 9
10#Define rolling file appender
11log4j.appender.file=org.apache.log4j.RollingFileAppender
12log4j.appender.file.File=logs/main.log
13log4j.appender.file.Append=true
14log4j.appender.file.ImmediateFlush=true
15log4j.appender.file.MaxFileSize=10MB
16log4j.appender.file.MaxBackupIndex=5
17log4j.appender.file.layout=org.apache.log4j.PatternLayout
18log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n
19
20#Define loggers
21log4j.logger.com.journaldev.log4j=WARN, file, console
22log4j.logger.com.journaldev.log4j.logic=DEBUG, file, console
23
24#setting additivity
25log4j.additivity.com.journaldev.log4j=false
26log4j.additivity.com.journaldev.log4j.logic=false

Log4j 财产配置器

「PropertyConfigurator」用于配置log4j设置. 如果文件名为log4j.properties,它在项目类路径中是可选的。我们必须在使用日志器之前配置它。

 1package com.journaldev.log4j.main;
 2
 3import org.apache.log4j.Logger;
 4import org.apache.log4j.PropertyConfigurator;
 5
 6import com.journaldev.log4j.logic.MathUtils;
 7
 8public class Log4jExample {
 9
10    static{
11    	init();
12    }
13    
14    private final static Logger logger = Logger.getLogger(Log4jExample.class);
15    
16    public static void main(String[] args) {
17
18    	logger.debug("My Debug Log");
19    	logger.info("My Info Log");
20    	logger.warn("My Warn Log");
21    	logger.error("My error log");
22    	logger.fatal("My fatal log");
23    			
24    }
25
26    /**
27     * method to init log4j configurations
28     */
29    private static void init() {
30    	PropertyConfigurator.configure("log4j.properties");
31    }
32
33}

当它执行时,你会得到下面的控制台日志。

1WARN Log4jExample - My Warn Log
2ERROR Log4jExample - My error log
3FATAL Log4jExample - My fatal log

同时,你会看到日志在 main.log 文件中生成,如下所示。

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

请注意,调试和信息日志器不会被打印,因为最低日志级别设置为 WARN. 这就是log4j属性文件示例使用的全部。

Published At
Categories with 技术
Tagged with
comments powered by Disqus