当前位置: 首页 > 教程 > Log4j >

Log4j XML配置

精华
小牛编辑
108浏览
2023-03-14

Log4J支持两种文件格式的配置,一种是log4j.properties,一种是log4j.xml。在本节中,我们将看到如何使用 XML 配置 log4j。

在“Log4j 入门案例”中,我们解释了如何使用properties属性文件配置 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="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />  
        </layout>  
    </appender>  
  
    <root>  
        <level value="DEBUG" />  
        <appender-ref ref="console" />  
    </root>  
  
</log4j:configuration>  

要使用 xml 文件配置 log4j,我们使用DOMConfigurator.configure()方法。

package cn.xnip;

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.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="false" />
        <param name="maxFileSize" value="10KB" />
        <param name="maxBackupIndex" value="5" />

        <param name="file" value="${catalina.home}/logs/myStruts1App.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <root>
        <level value="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="%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="false" />  
        <param name="maxFileSize" value="10MB" />  
        <param name="maxBackupIndex" value="10" />  
        <param name="file" value="${catalina.home}/logs/myStruts1App.log" />  
        <layout class="org.apache.log4j.PatternLayout">  
        <param name="ConversionPattern"   
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />  
        </layout>  
    </appender>  
  
    <root>  
        <level value="DEBUG" />  
        <appender-ref ref="console" />  
        <appender-ref ref="file" />  
    </root>  
  
</log4j:configuration>

控制台输出结果如下: