lockback的使用

本文介绍了logback日志框架,由log4j创始人开发,包含logback-core、logback-classic和logback-access三个模块。logback比log4j具有更高的性能、完善的文档和功能测试。详细阐述了logback的配置,包括Logger、appender和layout,以及logger context的管理。还讨论了日志级别的继承规则和打印策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载于:java风云

目录

logback简介

logback配置介绍

logback.xml配置详解


logback简介

logback是由log4j的创始人开发的新日志框架,包括三个模块:

  • logback-core
  • logback-classic
  • logback-access

logback-core是核心模块,logback-classic是日志框架,相当于log4j,logback很好的实现了slf4j,logback-access提供跟web 容器有关的日志访问功能。

logback与log4j的区别

logback和Log4j是同一个开发者,与log4j相比,logback有如下优势:

  • 更高的性能,性能提高几十倍
  • 更完善的文档
  • 更完善的功能测试
  • 提供热加载机制
  • 对slf4j有更直接的实现,不像Log4j还需要转换器
  • 可以生成日志归档文件
  • 可以通过配置文件设置自动删除归档文件

logback配置介绍

  • Logger、appender及layout

logback可以在配置文件配置具体的参数,配置文件主要由Logger、appender及layout等配置组成。

logger主要是日志记录器,通过Logcontext进行管理,存放logger对象。

appender设置日志输出的目的地,可以输出到控制台、文件、数据库等目标。

layout 用来指定日志输出的字符串格式。

  • logger context

logcontext负责管理logger,logger由logcontext创建,并由logcontext管理logger对象的树状关系,logger对象通过org.slf4j.LoggerFactory 类的静态方法getLogger取得 ,getlogger以当前类的全限定名作为参数传入,如果参数相同,通过该方法永远获得同一个对象。

  • 级别的继承

每一个logger对象可以设定日志的输出级别,日志级别由高到低分为TRACE、DEBUG、INFO、WARN 和 ERROR ,如果当前logger没有设置级别,获取上层对象的日志级别作为logger的日志级别。

  • 日志的打印规则

例如我们做logger.info(“Hello word!”);的日志输出,info是当前日志请求的级别,该请求级别需要大于等于logger对象设置的日志级别才能启用该日志输出,否则不能输出,级别顺序为
TRACE < DEBUG < INFO < WARN < ERROR 。

logback.xml配置详解

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
    <property name="LOG_HOME" value="/tmp/logs/" />

    <!-- 控制台输出 -->
    <appender name="STDOUT"
              class="ch.qos.logback.core.ConsoleAppender">
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 按照每天生成日志文件。存储事件日志 -->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- <File>${LOG_HOME}/app.log</File>设置日志不超过${log.max.size}时的保存路径,注意,如果是web项目会保存到Tomcat的bin目录 下 -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名 -->
            <FileNamePattern>${LOG_HOME}/app-%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小 -->
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!--异步打印日志-->
    <appender name ="ASYNC_FILE" class= "ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold >0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>512</queueSize>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref = "FILE"/>
    </appender>

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ASYNC_FILE" />
        <appender-ref ref="error" />
    </root>
</configuration>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值