Log4J学习【十五】XML的配置方式练习

来源:互联网 发布:用户数据分析方法 编辑:程序博客网 时间:2024/04/30 09:24
今天我们来使用XML的配置方式完成几个例子,我们的重点放在XML配置文件上。
    练习1:对于包cd.itcast.log和cd.itcast.log2,设置日志级别为INFO,并且cd.itcast.log下面的类使用console输出;cd.itcast.log2下面的类使用file输出。
给出测试类:
@Test
public void test(){
    DOMConfigurator.configure("log4j.xml");
    Logger log=Logger.getLogger("cd.itcast.log");
    Logger log2=Logger.getLogger("cd.itcast.log2");

    log.info("log info");
    log.debug("log debug");
    log2.info("log2 info");
    log2.debug("log2 debug");
}

    首先来考虑配置思路:
1,日志级别都是INFO,所以统一设置rootLogger的LEVEL即可;
2,要求有console和file输出,需要定义两个Appender;
3,log用console输出,log2用file输出,只需要分别把appender添加到logger中即可。
    所以,配置文件为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.SimpleLayout" />
    </appender>
    <appender name="file" class="org.apache.log4j.FileAppender">
        <param name="file" value="log.log"/>
        <layout class="org.apache.log4j.SimpleLayout" />
    </appender>
    <logger name="cd.itcast.log">
        <appender-ref ref="console"/>
    </logger>
    <logger name="cd.itcast.log2">
        <appender-ref ref="file"/>
    </logger>
    <root>
        <level value="INFO" />
    </root>
</log4j:configuration>

    在写XML配置的时候,注意各个元素出现的顺序,因为DTD中的元素顺序是固定的。这点需要额外注意一下。

    练习2:给定包cd.itcast下的日志输出级别为INFO,但是cd.itcast.log下面的类日志输出级别为DEBUG,并且,cd.itcast.log包下的日志输出除了cd.itcast包中的使用特定pattern的file appender之外,还需要输出到console中。
    首先考虑一下配置思路:
1,cd.itcast需要设置一个日志输出级别INFO,需要为cd.itcast.log额外设置一个输出级别。
2,需要配置一个file和consoleappender;
3,需要为cd.itcast和cd.itcast.log独立配置appender。
@Test
public void test(){
    DOMConfigurator.configure("log4j.xml");
    Logger log=Logger.getLogger("cd.itcast.log");
    Logger log2=Logger.getLogger("cd.itcast.log2");

    log.info("log info");
    log.debug("log debug");
    log2.info("log2 info");
    log2.debug("log2 debug");
}

测试代码不变,配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="conversionPattern" value="%r [%t] %p %c %x - %m%n"/>
        </layout>
    </appender>
    <appender name="file" class="org.apache.log4j.FileAppender">
        <param name="file" value="log.log"/>
        <layout class="org.apache.log4j.PatternLayout">
           <param name="conversionPattern" value="%r [%t] %p %c %x - %m%n"/>
        </layout>
    </appender>
    <logger name="cd.itcast">
        <level value="INFO" />
        <appender-ref ref="file"/>
    </logger>
    <logger name="cd.itcast.log">
        <level value="DEBUG" />
        <appender-ref ref="console"/>
    </logger>
</log4j:configuration>
0 0