zoukankan      html  css  js  c++  java
  • log4j2使用入门(一)

      log4j2是log4j的一个升级版,与log4j1相比进行了很大的改善,同时也修复了一些logback的架构上的问题。所以是目前应用开发的首选的日志器(下载位置:http://apache.fayea.com/logging/log4j/2.8/apache-log4j-2.8-bin.zip )。

    下载后log4j2的二进制包解压后,可以看到里面主要包含以下jar文件(以2.8的版本为例):

    •   log4j-1.2-api-2.8.jar
    •   log4j-api-2.8.jar
    •   log4j-core-2.8.jar
    •   log4j-jcl-2.8.jar
    •   log4j-slf4j-impl-2.8.jar
    •   log4j-to-slf4j-2.8.jar
    •   log4j-web-2.8.jar

      先大致介绍下上述各个jar包的作用,开发普通JAVA项目时,只需依赖log4j-core-2.8.jar和log4j-api-2.8.jar  ,

    开发web项目时还需要多依赖log4j-web.2.8.jar这个包。

    log4j-slf4j-impl-2.8.jar和log4j-to-slf4j-2.8这两个jar用于适配slf4j这个日志门面框架,

    log4j-jcl-2.8.jar用于适配commons-logging框架

    log4j-1.2-api-2.8.jar用于log4j1.2版本的升级,用这个jar替换原有的log4j1.x的jar

      下面详细介绍下log4j2基本使用,一般要在类路径下配置一个xml文件做为log4j2的配置文件,文件按照约定最好命名为log4j2.xml。log4j2默认会在classpath目录下寻找log4j.json、log4j.jsn、log4j2.xml等名称的文件,如果都没有找到,则会按默认配置输出,也就是输出到控制台。看一个最简单的配置文件的内容:

    <?xml version="1.0" encoding="UTF-8"?>  
    <configuration status="WARN" monitorInterval="5">      <!-- status属性是用来指定log4j2自身的日志输出级别,monitorInterval属性值如果是非零值则会间隔这个值的秒数,去查看配置文件是否发生变化,如果变化则会动态加载新的配置 -->
      <appenders>               <!-- appender是用来指定日志的输出地,我们用到的常用appender是两个,控制台和文件,分别配置如下 -->                  
        <Console name="StandOut" target="SYSTEM_OUT">    <!-- SYSTME_OUT是log4j2里面定义的一个常量值,表示标准输出  -->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>   <!--指定了日志的布局输出格式,详细占位符的意义见下文 -->
        </Console>
        <Console name="StandError" target="SYSTEM_ERR">   <!-- SYSTME_ERR是log4j2里面定义的一个常量值,表示标准错误输出  -->
    <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <File name="File" fileName="f:/logs/info.log">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
    </appenders>
    <loggers> <!--日志器的定义-->
      <root level="TRACE">
        <appender-ref ref="Console"/>
      </root>
    <logger name="org.huxin.study.demo.log4j2.App" level="INFO" additivity="false"> <!--它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。 -->
        <appender-ref ref="StandError"/>
      </logger>
    </loggers>
    </configuration>

    控制日志输出格式的常用占位符含义如下:

    %d{HH:mm:ss.SSS} 表示输出到毫秒的时间

    %t 输出当前线程名称

    %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0

    %logger 输出logger名称,因为Root Logger没有名称,所以没有输出

    %msg 日志文本

    %n 换行

    log4j定义的日志级别有:日志级别从低到高分为 ALL TRACE DEBUG INFO WARN ERROR FATAL OFF  ,某个日志器配置为某个级别,则低于这个级别的日志不会输出

    日志器Logger:在使用log4j2时,我们一般都会通过代码先在类中获取一个Logger,然后调用其方法进行日志的打印,这个Logger就称为日志器。获取日志器的方法如下:

            Logger x = LogManager.getLogger("wombat");    //实际在使用时,一般通过类名去获取日志器

            日志器是有父子级别的概念的,log4j2默认提供了一个root的日志器做为所有日志器的父日志器。每个日志器会对应一个具体的LoggerConfig,如果某个日志器没有相应的LoggerConfig,则会继承其父日志的LoggerConfig , 

  • 相关阅读:
    集成学习方法
    nlp知识
    kaggle竞赛入门整理
    pandas知识点
    EM算法
    特征工程
    【clustering】之K-means && K-medoids
    sklearn学习笔记
    周总结十二
    《如何高效学习》读书笔记五
  • 原文地址:https://www.cnblogs.com/hzhuxin/p/6406272.html
Copyright © 2011-2022 走看看