上一篇文章说到了 log4j 的 properties 的配置方式,虽然感觉区别没有很大,但是 log4j.properties的配置方式里面不能使用 Filter 过滤器来限制日志级别,另一个原因在于 log4j.xml 在插入数据库的时候sql 语句可以放在 layout 属性的 ConversionPattern 参数中,而 log4j.properties 配置起来就显得更加麻烦。
一、步骤
1.引入 jar 包
2.src 下创建 log4j.xml 文件
3.配置头部(重要)
4.配置 XML
二、代码部分
XML 文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <!-- 以下是 appender 的定义,定义日志输出的目的地、输出方式和过滤级别 --> <!-- * 1. 一个 appender 子元素定义一个日志输出目的地 * 2. 一个logger子元素定义一个日志写出器 --> <appender name="myFileAppend" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="E:logs//output.log" /><!-- 设置日志输出文件名 --> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> <param name="Append" value="true" /> <param name="MaxBackupIndex" value="10" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /> </layout> <!-- LevelRangeFilter:是一个非常简单的过滤器基于水平匹配,可拒绝消息优先级在一定范围内。 过滤器承认三个选项 LevelMin , LevelMax , AcceptOnMatch。 如果 LoggingEvent 的水平不是 Min 和 Max (包容),然后过滤。否认返回。 如果日志事件级别是在指定范围内,然后如果 AcceptOnMatch 是真的,过滤器。接受返回,如果AcceptOnMatch是假,过滤器。中立的返回。 如果 LevelMin 没有定义,那么就没有最小可接受的水平(即水平永远不会拒绝过于“低”/不重要)。 如果LevelMax没有定义,那么就没有最大可接受的水平(即水平也不会拒绝这份“高”/重要)。 参考 setThreshold 方法可用于所有输出源扩展 AppenderSkeleton 为一个更加方便的方式来过滤事件级别。 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="DEBUG"></param> <param name="LevelMax" value="DEBUG"></param> <param name="AcceptOnMatch" value="true"></param> </filter> </appender> <!-- 控制台输出 --> <appender name="consoleAppend" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%5p][%t][%c{1}]-[%M] %m%n" /> </layout> </appender> <appender name="activexAppender" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="E:/logs/activex.log" /> <param name="Appender" value="false"></param> <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" /> </layout> </appender> <!-- 日志写出器:每一个 logger 可以有多个输出目的地和输出方式 additivity 指示是否遵循缺省的继承机制 --> <logger name="com.inspur.log4j.testLog4j" additivity="false"> <level value="DEBUG"></level> <appender-ref ref="consoleAppend"></appender-ref> </logger> <!-- 根logger的设置 --> <root> <priority value="debug" /> <appender-ref ref="myFileAppend" /> <appender-ref ref="activexAppender" /> </root> </log4j:configuration>
测试类
package com.inspur.log4j; import org.apache.log4j.Logger; public class testLog4j { public static final Logger log = Logger.getLogger(testLog4j.class); public static void main(String[] args) { System.out.println("Start."); for (int i = 0; i < 4; i++) { log.info("Enter the main()...."); log.debug("Enter the main()...."); log.warn("Enter the main()...."); log.error("Exception!"); System.out.println("This is log4j test."); log.info("End."); } } }记得要在指定目录下建立一个 logs 文件夹~
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/qq_21394609/article/details/47804727