美文网首页
Log4j2一定入门教程

Log4j2一定入门教程

作者: 啥也不说了 | 来源:发表于2016-12-05 23:39 被阅读888次

    目标

    文章目标

    1、让你可以入门,可以输出日志到控制台和文件中,但不讲输出格式方面的东西;2、说明下Log4j2中的一些概念

    目标人群

    以前对Log4j没有了解或者了解很少的人或者你就想看看作者多菜的人。但是至少要对日志有个基本了解,例如日志级别。

    简介

    前几天公司的同事说要使用Log4j2,要抛弃公司自己封装的那一套日志框架了。以前就有从头细致学习Log4j2日志的想法,借着机会就系统的学习下吧!但是在入手的过程中,发现许多基础概念没有,然后别人写的入门教程看不懂,有疑问也不知道找谁,那就自己上,有问题自己解决。本篇主要介绍我当时疑惑的问题,无法入门。

    最简单的配置

    1、需求

    简单的把info级别的日志打印到控制台。

    show me code。

    也可以看开源代码的start模块

    package learn.log4j2.start;
    /** * Created by pengge on 2016/12/7. 
    * Purpose: 入门代码
    */
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    public class QuicklyStart {    
          private static final Logger LOGGER = LogManager.getLogger(QuicklyStart.class);    
          public static void main(String[] args) {        
              LOGGER.warn("logger:warn");       
              LOGGER.error("logger:error");        
              LOGGER.info("logger:info");    
          }
    }
    

    配置文件。注意文件名必须为:log4j2.xml,且必须放到class目录

    <?xml version="1.0" encoding="utf-8"?>
    <configuration status="warn">    
       <appenders>       
         <Console name="Console" target="SYSTEM_OUT" follow="false">            
            <PatternLayout pattern="%5p:%d{yyyy-MM-dd HH:mm:ss.SSS}[%M] %m %n"/>        
         </Console>  
        </appenders>   
       <loggers>       
         <root level="info">          
           <AppenderRef ref="Console"/>        
         </root>   
       </loggers>
    </configuration>
    

    这样就可以简单的把日志打印到控制台了。

    代码解释

    1、xml代码注释

    代码主要分为两部分,appenders部分和Loggers部分。其中appenders主要是来配置输出方式,例如输出目的地和输出格式;loggers配置的是创建日志时的名称。log4j2创建日志时有三种方式,1)默认root、2)指定名称、3)父包名。这里用的是全名称匹配,后面会给个事例进行对比。

    2、Java代码注释

    Java代码很简单,通过调用LogManager.getLogger()方法,使用类名创建了个日志对象。

    不同创建对比

    public class Two {    
      private static final Logger rootLogger = LogManager.getRootLogger();  
      private static final Logger nameLogger = LogManager.getLogger("name");    
      private static final Logger parentLogger = LogManager.getLogger(Two.class);    
      public static void main(String[] args) {        
        rootLogger.warn("rootLogger:warn");        
        rootLogger.error("rootLogger:error");        
        rootLogger.info("rootLogger:info");        
        nameLogger.warn("nameLogger:warn");        
        nameLogger.error("nameLogger:error");        
        nameLogger.info("nameLogger:info");        
        parentLogger.warn("parentLogger:warn");        
        parentLogger.error("parentLogger:error");        
        parentLogger.info("parentLogger:info");    
      }
    }
    
    <?xml version="1.0" encoding="utf-8"?><configuration status="warn">    
      <appenders>        
        <Console name="Console" target="SYSTEM_OUT" follow="false">            
          <PatternLayout pattern="%5p:%d{yyyy-MM-dd HH:mm:ss.SSS}[%M] %m %n"/>        
        </Console>    
      </appenders>   
      <loggers>       
        <logger name="name" level="warn" additivity="false">            
          <AppenderRef ref="Console"/>        
        </logger>        
        <logger name="learn.log4j2" level="error" additivity="false">            
          <AppenderRef ref="Console"/>        
        </logger>        
        <root level="info">            
          <AppenderRef ref="Console"/>        
        </root>    
      </loggers>
    </configuration>
    

    上面的例子是对不同方式创建的log进行了对比,如果输出结果,就会明白。

    相关文章

      网友评论

          本文标题:Log4j2一定入门教程

          本文链接:https://www.haomeiwen.com/subject/qlbhmttx.html