log4j root 和 category (logger)关系

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

<log4j:configuration 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} [%7r] %-5p %c %M:%L - %m%n"/>
        </layout>
    </appender>

    <appender name="FILE-DEBUG" class="org.apache.log4j.DailyRollingFileAppender">
    	<param name="DatePattern" value="'.'yyyyMMdd" />
        <param name="Append" value="true"/>
        <param name="Threshold" value="DEBUG"/>
        <param name="Encoding" value="UTF-8"/>
        <param name="file" value="${profile.log.root.path}/${profile.log.name.web}/${profile.log.name.web}-debug.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%7r] %-5p %c %M:%L - %m%n"/>
        </layout>
    </appender>


    <category name="com.portal.controller" <strong><span style="color:#ff6666;">additivity="false"</span></strong>>
        <priority value="INFO"/>
        <appender-ref ref="CONSOLE"/>
    </category>

    <root>
        <priority value="INFO"/>
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE-DEBUG"/>
    </root>
</log4j:configuration>


    public String index(Model model) {
        logger.info("日志测试");
                return null;
    }


测试结果:

1、不写root标签,只写category标签 

输出结果:测试日志

2、写root标签和category,category的属性additivity="false"

输出结果:测试日志

3、写root标签和category,category的属性additivity="true"

输出结果:测试日志   测试日志

4、不写category,只写root

输出结果:测试日志

5、都不写

不会输出任何日志

6、写root,不写category,但是root中不写<appender-ref ref="CONSOLE"/>

      在控制台不会输出任何日志

7、不写root,写category,category的属性additivity="false"

      输出结果:测试日志 

      说明:category的属性additivity="false"表示在category中定义日志输在root中过滤掉



总结:

category的name,指定的是控制某个包下的日志 , 可以按照业务逻辑进行日志分类输出打印 

root是控制整个工程的日志

root和category都是通过<appender-ref ref="CONSOLE"/>执行具体appender中的日志策略,配置哪个appender执行哪个

root和category是父子关系,root标签可以不写,category也可以不写 , 但是必须写一个

       category的属性additivity="false"表示在category中定义日志输在root中过滤掉



其他:

category的name,按照业务逻辑进行日志分类输出打印 

例如:定义name = “userManagerLog” , 那么在代码中与用户管理相关的业务引入日志的时候  LogManager.getLogger(“userManagerLog”) ,

    则可以通过控制一个业务逻辑的日志打到一个文件下



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值