【Log4j XML配置用法】两个最重要的配置选项是使用log4j.xml配置或使用log4j.properties配置。在本节中, 我们将看到如何使用XML配置log4j。我们也可以使用属性文件, 但是现在优先使用一天的xml而不是属性文件。
这是主要配置文件, 其中包含log4j使用的所有运行时配置。该文件将包含log4j附加程序信息, 日志级别信息和文件附加程序的输出文件名。
在”
Log4j示例”
部分中, 我们解释了如何使用属性文件配置log4j。在这里, 除了我们使用XML配置文件之外, 所有内容都保持不变。
以下代码显示了相应的log4j.xml文件:
<
?xml version="1.0" encoding="UTF-8" ?>
<
!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<
log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<
appender name="console" class="org.apache.log4j.ConsoleAppender">
<
layout class="org.apache.log4j.PatternLayout">
<
param name="ConversionPattern" value="http://www.srcmini.com/%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
<
/layout>
<
/appender>
<
root>
<
level value="http://www.srcmini.com/DEBUG" />
<
appender-ref ref="console" />
<
/root>
<
/log4j:configuration>
要使用xml文件配置log4j, 我们使用DOMConfigurator.configure()方法。
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class HelloWorld { static Logger logger = Logger.getLogger(HelloWorld.class);
public static void main(String[] args) {DOMConfigurator.configure("log4j.xml");
logger.debug("Sample debug message");
logger.info("Sample info message");
logger.warn("Sample warn message");
logger.error("Sample error message");
logger.fatal("Sample fatal message");
}}
输出
log4j: reset attribute= "false".log4j: Threshold ="null".log4j: Level value for root is[DEBUG].log4j: root level set to DEBUGlog4j: Class name: [org.apache.log4j.ConsoleAppender]log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].log4j: Adding appender named [console] to category [root].2019-09-05 18:07:45 DEBUG HelloWorld:10 - Sample debug message2019-09-05 18:07:45 INFOHelloWorld:11 - Sample info message2019-09-05 18:07:45 WARNHelloWorld:12 - Sample warn message2019-09-05 18:07:45 ERROR HelloWorld:13 - Sample error message2019-09-05 18:07:45 FATAL HelloWorld:14 - Sample fatal message
上面的示例用于控制台输出。如果要在文件上获取输出, 则只需更改log4j.xml文件。
输出到文件:
下面的log4j.xml将日志记录重定向到文件。
<
?xml version="1.0" encoding="UTF-8" ?>
<
!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<
log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<
appender name="file" class="org.apache.log4j.RollingFileAppender">
<
param name="append" value="http://www.srcmini.com/false" />
<
param name="maxFileSize" value="http://www.srcmini.com/10KB" />
<
param name="maxBackupIndex" value="http://www.srcmini.com/5" />
<
param name="file" value="http://www.srcmini.com/${catalina.home}/logs/myStruts1App.log" />
<
layout class="org.apache.log4j.PatternLayout">
<
param name="ConversionPattern" value="http://www.srcmini.com/%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
<
/layout>
<
/appender>
<
root>
<
level value="http://www.srcmini.com/ERROR" />
<
appender-ref ref="file" />
<
/root>
<
/log4j:configuration>
输出到控制台和文件:
甚至你也可以在控制台上获得输出以及文件。下面的log4j.xml配置文件将输出重定向到控制台和文件。
<
?xml version="1.0" encoding="UTF-8" ?>
<
!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<
log4j:configuration debug="true"xmlns:log4j='http://jakarta.apache.org/log4j/'>
<
appender name="console" class="org.apache.log4j.ConsoleAppender">
<
layout class="org.apache.log4j.PatternLayout">
<
param name="ConversionPattern" value="http://www.srcmini.com/%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
<
/layout>
<
/appender>
<
appender name="file" class="org.apache.log4j.RollingFileAppender">
<
param name="append" value="http://www.srcmini.com/false" />
<
param name="maxFileSize" value="http://www.srcmini.com/10MB" />
<
param name="maxBackupIndex" value="http://www.srcmini.com/10" />
<
param name="file" value="http://www.srcmini.com/${catalina.home}/logs/myStruts1App.log" />
<
layout class="org.apache.log4j.PatternLayout">
<
param name="ConversionPattern" value="http://www.srcmini.com/%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
<
/layout>
<
/appender>
<
root>
<
level value="http://www.srcmini.com/DEBUG" />
<
appender-ref ref="console" />
<
appender-ref ref="file" />
<
/root>
<
/log4j:configuration>
输出
log4j: reset attribute= "false".log4j: Threshold ="null".log4j: Level value for root is[DEBUG].log4j: root level set to DEBUGlog4j: Class name: [org.apache.log4j.ConsoleAppender]log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].log4j: Adding appender named [console] to category [root].log4j: Class name: [org.apache.log4j.RollingFileAppender]log4j: Setting property [append] to [false].log4j: Setting property [maxFileSize] to [10MB].log4j: Setting property [maxBackupIndex] to [10].log4j: Setting property [file] to [/logs/myStruts1App.log].log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].log4j: setFile called: /logs/myStruts1App.log, falselog4j: setFile endedlog4j: Adding appender named [file] to category [root].2019-09-05 18:26:30 DEBUG HelloWorld:10 - Sample debug message2019-09-05 18:26:30 INFOHelloWorld:11 - Sample info message2019-09-05 18:26:30 WARNHelloWorld:12 - Sample warn message2019-09-05 18:26:30 ERROR HelloWorld:13 - Sample error message2019-09-05 18:26:30 FATAL HelloWorld:14 - Sample fatal message
推荐阅读
- Log4J日志级别
- Log4j架构详解
- Log4j用法实例详细步骤
- Log4j安装详细步骤
- Log4j教程介绍
- java面试|金三银四跳槽季求职指南
- Java|MyBatis Plus
- Log4j使用简介
- 中间件|为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?