0002-log4j(1.x)源码导入

1.    地址

http://apache.opencas.org/logging/log4j/1.2.17/

2.    idea创建一个maven项目,导入刚才下载下来的src/main/java中的源码

在pom.xml需要加入以下两个依赖

<dependency>
  <groupId>javax.jms</groupId>
  <artifactId>jms</artifactId>
  <version>1.1</version>
</dependency>
<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>javax.mail</artifactId>
  <version>1.5.5</version>
</dependency>


3.    解析log4j.xml或者log4j.properties

    源码里面的注释提倡用log4j.xml:因为log4j.properties不支持xml中配置的自定义ErrorHandler,AysncAppender.

我们如果想看log4j是怎么加载配置文件的,可以在标签

<log4j:configuration>中加上debug="true".这样我们就可以查看它加载log4j.xml的过程。

完整的log4j.xml内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<!--
%p : 日志级别,debug,info,warn,error,fatal
%r : 耗费的毫秒数
%c : 输出所属的类名
%t : 线程名
%n : 回车换行符(linux为/n,windows为/r/n)
%d : 输出日志时间点,可以指定格式,%d{yyyy MM dd HH:mm:ss,SSS}
%l : 日志事件发生的位置,包括类名,线程名,以及在文件中的行数.
%m : 日志中记录的消息
%L : 输出代码中的行号
%x : 输出和当前线程相关联的NDC(嵌套诊断环境)
%F : 输出日志消息产生时所在的文件名称
%L : 输出代码中的行号

appender:
ConsoleAppender : 控制台
FileAppender :文件
DailyRollingFileAppender : 每天产生一个日志文件
RollingFileAppender : 文件大小达到指定大小时候产生一个新文件
WriterAppender : 以流格式输出到任何地方
-->
<log4j:configuration debug="true">
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="%d [%-5p] %F %L [%t] - %m%n"/>
        </layout>
    </appender>

    <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="log/app.log"/>
        <param name="DatePattern" value="'app.'yyyy-MM-dd'.log'"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="%d [%-5p] %F %L [%t] - %m%n"/>
        </layout>
    </appender>
    <root>
        <priority value="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 DEBUG
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d [%-5p] %F %L [%t] - %m%n].
log4j: Adding appender named [CONSOLE] to category [root].
log4j: System property is :null
log4j: Standard DocumentBuilderFactory search succeded.
log4j: DocumentBuilderFactory is: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
log4j: debug attribute= "true".
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Level value for root is  [debug].
log4j: root level set to DEBUG
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d [%-5p] %F %L [%t] - %m%n].
log4j: Adding appender named [CONSOLE] to category [root].

所以我们就直接看DOMConfigurator的加载流程。



转载于:https://my.oschina.net/u/149702/blog/634868

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值