码迷,mamicode.com
首页 > 其他好文 > 详细

Log4j2

时间:2018-09-03 02:31:12      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:--   不同的   情况下   针对   邮箱   自身   验证   sys   版本号   

Log4j2的使用教程

1、Log4j2所需要的jar包(xx表示各种版本号)

    log4j-core-xx.jar

    log4j-api-xx.jar

 

2、开始使用

   我们知道,要在某个类中使用log4j记录日志,只需要申明下面的成员变量(其实不一定要是成员变量,只是为了方便调用而已)

 private static final Logger logger = LogManager.getLogger(LoggerController.class);

这里getLogger有一个参数指定的是这个logger的名称。基本方式是类名.Class

声明了Logger对象,我们就可以在代码中使用他了。

 

3、日志的级别

  我们现在要调用logger的方法,不过在这个Logger对象中,有很多方法,所以要先了解log4j的日志级别,log4j规定了默认的几个级别:trace<debug<info<warn<error<fatal等。这里要说明一下:

  • 级别之间是包含的关系,意思是如果你设置日志级别是trace,则大于等于这个级别的日志都会输出
  • 这不同的级别的含义大家都很容易理解,这里就简单介绍一下:   

    trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出。

    debug: 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。

    info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。

    warn: 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。

    error: 错误信息。用的也比较多。

    fatal: 级别比较高了。重大错误,这种级别你可以直接停止程序了,是不应该出现的错误么!不用那么紧张,其实就是一个程度的问题。

4、配置文件

  • 日志输出到控制台

  举个例子:

?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </appenders>
    <loggers>
        <!--我们只让这个logger输出trace信息,其他的都是error级别-->
        <!--
        additivity开启的话,由于这个logger也是满足root的,所以会被打印两遍。
        不过root logger 的level是error,为什么Bar 里面的trace信息也被打印两遍呢
        -->
        <logger name="logger.LoggerController" level="trace" additivity="false">
            <appender-ref ref="Console"/>
        </logger>
        <root level="error">
            <appender-ref ref="Console"/>
        </root>
    </loggers>
</configuration>

简单介绍下这个配置文件:

来看我们添加的配置文件log4j2.xml,以Configuration为根节点,有一个status属性(关闭自身日志输出 status="OFF">),这个属性表示log4j2本身的日志信息打印级别。如果把status改为TRACE再执行测试代码,可以看到控制台中打印了一些log4j加载插件、组装logger等调试信息

  1. appenders:这个下面定义的是各个appender,就是输出了(常见的有输出到控制台、输出到文件、输出到邮箱等),先看这个例子,只有一个Console,这些节点可不是随便命名的,Console就是输出控制台的意思。然后就针对这个输出设置一些属性,这里设置了PatternLayout就是输出格式了。 
%d{yyyy/MM/dd  HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n
2018/09/02  22:15:13.289 ERROR logger.LoggerController 24 log - error
  • %d:表示输出的时间格式
  • %5level:表示输出的级别占5个字符
  • %class{36}:表示输出的类(完整的类),{}表示该类一共有多少层,如logger.LoggerController有2层;
  • %L:表示在第几行输出
  • %M:输出产生日志信息的方法名
  • %msg:输出代码中指定的具体日志信息
  • %n:输出一个回车换行符
  • loggers下面会定义许多个logger,这些logger通过name进行区分,来对不同的logger配置不同的输出,

方法是通过引用上面定义的logger,注意,appender-ref引用的值是上面每个appender的name,而不是节点名称。

 

***关于additivity属性:它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。

 

 

 

  • 日志输出到文件
 1      <properties>
 2           <property name="filename">demo.log</property>
 3           <property name="path">F:/workSpaces3/logger/log/</property>
 4       </properties>
 5 
 6         <!--输出到本地文件-->
 7         <RollingFile name="file" fileName="${path}${filename}"
 8                      filePattern = "${path}$${date:yyyy-MM}/app-%d{yyyyMMddHHmmssSSS}.log.gz">
 9             <!--日志文件的布局-->
10             <patterLayout pattern="%d{yyyy/MM/dd ‘at‘ HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
11             <!--文件中所需要记录的信息-->
12             <Filters>
13                 <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
14             </Filters>
15             <!--当日志文件达到一定大小是生成一个日志文件-->
16             <Policies>
17                 <SizeBasedTriggeringPolicy size="1 MB"/>
18             </Policies>
19             <!--日志策略:日志的最大值为20MB-->
20             <DefaultRolloverStrategy max="20"/>
21         </RollingFile>

 

 

 

 

<properties>标签定义了日志文件的路径和名字

 

filePattern = "${path}$${date:yyyy-MM}/app-%d{yyyyMMddHHmmssSSS}.log.gz"表示将日志打包成压缩包
<Policies>
  <!--设置每天打包日志一次-->
  <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
  <!--设置日志文件满1MB后打包-->
  <SizeBasedTriggeringPolicy size="1 MB" />
</Policies>

 

Log4j2

标签:--   不同的   情况下   针对   邮箱   自身   验证   sys   版本号   

原文地址:https://www.cnblogs.com/xiaocao123/p/9576528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!