zoukankan      html  css  js  c++  java
  • log4j 分类输出

    一个log4j的问题也是折磨了我两天了。

    终于算是实现了个符合需求的小demo。然而,我必须吧log4j搞定,这个乐塞。

    需求描述:

      用xml配置文件,将debug、info、warn、error分类且单独放各自相应的日志文件中。

    实现:

      xml文件:

    <?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">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
      </appender>
      
      <appender name="my_error" class="org.apache.log4j.FileAppender">
        <param name="File" value="D://logs/log4j_error.log"/>   
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
                            <param name="levelMin" value="ERROR" />
                            <param name="levelMax" value="ERROR" />
        </filter>
      </appender>
      
      <appender name="my_warn" class="org.apache.log4j.FileAppender">
        <param name="File" value="D://logs/log4j_warn.log"/>   
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
                            <param name="levelMin" value="WARN" />
                            <param name="levelMax" value="WARN" />
        </filter>
      </appender>
      
      <appender name="my_info" class="org.apache.log4j.FileAppender">
        <param name="File" value="D://logs/log4j_info.log"/>   
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
                            <param name="levelMin" value="INFO" />
                            <param name="levelMax" value="INFO" />
        </filter>
      </appender>
      
      <appender name="my_debug" class="org.apache.log4j.FileAppender">
        <param name="File" value="D://logs/log4j_debug.log"/>   
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
                            <param name="levelMin" value="DEBUG" />
                            <param name="levelMax" value="DEBUG" />
        </filter>
      </appender>
      
         <logger name="Test.log4jTest" additivity="true">      
            <level value="DEBUG" />      
            <appender-ref ref="my_debug" />  
            <appender-ref ref="my_warn" /> 
            <appender-ref ref="my_info" /> 
            <appender-ref ref="my_error" />  
         </logger>
         
        <root>
          <priority value ="debug" />
          <appender-ref ref="console" />
        </root>
    
    </log4j:configuration>

    测试类 log4jTest:

    package Test;
    
    import org.apache.log4j.Appender;
    import org.apache.log4j.xml.DOMConfigurator;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class log4jTest {
        private static Logger logger = LoggerFactory.getLogger(log4jTest.class);
    
        static {
            DOMConfigurator.configure("log4j.xml");
        }
    
        public static void main(String[] args) {
            logger.debug("this is debug");
            logger.info("this is info");
            logger.error("this is error");
            logger.warn("this is warn");
        }
    
    }

    关键点:

      1.xml中,起单独分类作用的是标签 <filter>

      2.测试类中,加上一行代码,用于获取log4j.xml。(为了配置方便,我的log4j放在了项目根目录下,与src同级,故必须加上改行代码。)

        DOMConfigurator.configure("log4j.xml");

      其他point将在后续文章逐点列出,敬请关注。

  • 相关阅读:
    判断表字段是否存在default约束
    在Eclipse mars 4.5.2 中安装spring 插件 spring tool suite
    MySql (mysql-5.6.37) 在Windows的安装及使用
    在CentOS7.2中搭建Tomcat9 并启用http/2 协议
    CentOS 7.2 中 Kafka,Zookeeper的单机部署,伪分布式部署以及真正的分布式部署
    博客歇菜后的总结
    通过WiFi连接手机(device), 出去数据线的烦恼
    Android Studio 使用三星 Note4 真机调试
    在Mac team 工作的那段日子里(一)
    又到年底了,没钱回家咋办?
  • 原文地址:https://www.cnblogs.com/not-NULL/p/5147829.html
Copyright © 2011-2022 走看看