log4j2使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

1.日志框架

日志接口(slf4j)

slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用(如log4j、logback)

日志实现(log4j、logback、log4j2)

  • log4j是apache实现的一个开源日志组件

  • logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j的原生实现

  • log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能比log4j 1.x提高10倍,并解决了一些死锁的bug,而且配置更加简单灵活。

2.为什么需要日志接口,直接使用具体的实现不就行了吗?

接口用于定制规范,可以有多个实现,使用时是面向接口的(导入的包都是slf4j的包而不是具体某个日志框架中的包),即直接和接口交互,不直接使用实现,所以可以任意的更换实现而不用更改代码中的日志相关代码。


一、log4j2日志级别

从大到小依次是: off, fatal, error, warn, info, debug, trace, all

二、对于log4j2配置文件的理解

1.配置文件结构:

  1. Appdenders部分

    1. Appender

      1. Filter

      2. Layout

      3. Policies

      4. Strategy

      5. Appender

  2. Loggers部分

    1. Logger

    2. RootLogger

2.对于Appender的理解

简单说Appender就是一个管道,定义了日志内容的去向(保存位置)。

配置一个或者多个Filter,Filter的过滤机制和Servlet的Filter有些差别,下文会进行说明。

  • 配置Layout来控制日志信息的输出格式。

  • 配置Policies以控制日志何时(When)进行滚动。

  • 配置Strategy以控制日志如何(How)进行滚动。

3.对于Logger的理解

简单说Logger就是一个路由器,指定类、包中的日志信息流向哪个管道,以及控制他们的流量(日志级别)

4.l配置文件格式

<?xml version="1.0" encoding="UTF-8"?>

<Configuration>

    <Appenders>

        <Appender>
            <Filters>
                <LevelRangeFilter minLevel="..." maxLevel="..." onMatch="..." onMismatch="..."/>
            </Filters>

            <PatternLayout pattern="..." charset="..."/>

            <Policies>
                <CronTriggeringPolicy schedule="..."/>
                <SizeBasedTriggeringPolicy size="..."/>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </Appender>

        <Appender>
            // ...
        </Appender>

    </Appenders>

    <Loggers>

        <Logger>
            <AppenderRef ref="...">
        </Logger>

        <Root>
            <AppenderRef ref="...">
        </Root>

    </Loggers>

</Configuration>

5.Appender标签的实现类

其实这些标签都是类名或者类名去掉后缀。

Appender的常用的实现类有:

  • ConsoleAppender(Console)

  • FileAppender(File)、RandomAccessFileAppender(RandomAccessFile)

  • RollingFileAppender(RollingFile)、RollingRandomAccessFileAppender(RollingRandomAccessFile)

打开这些实现类的源码,你一定会恍然大明白,括号中的是实现类在log4j2.xml配置文件中的标签名。

6.ConsoleAppender(Console)

该实现类会把日志输出到控制台中。

它有两种输出方式:

  • SYSTEM_OUT(System.out)

  • SYSTEM_ERR(System.err)

如果不配置,默认使用SYSTEM_OUT进行输出。括号中是调用的方法。

简单示例:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration name="baseConf" status="warn" monitorInterval="30">

    <Appenders>

        <Console name="Console" target="SYSTEM_OUT">
            <!-- 格式化日志 -->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值