今天我们来使用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>
练习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>