Logback学习

logback

1、logback介绍

Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好。

lockback优点:

  • 内核重写、测试充分、初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升。
  • logback非常自然地直接实现了slf4j,这个严格来说算不上优点,只是这样,再理解slf4j的前提下会很容易理解logback,也同时很容易用其他日志框架替换logback。
  • logback有比较齐全的200多页的文档。
  • logback当配置文件修改了,支持自动重新加载配置文件,扫描过程快且安全,它并不需要另外创建一个扫描线程。
  • 支持自动去除旧的日志文件,可以控制已经产生日志文件的最大数量。

1.1 lockback模块

logback-core:其他两个模块的基础模块

logback-classic:它是log4j的改良版本,完整实现了SIf4j API

logback-access:访问模块与servlet容器继承提供通过Http来访问日志的功能

想要使用lockback日志框架,至少需要在项目中整合下面三个模块:

slf4j-api:日志接口、lockback-core、logback-classic

1.2 lockback组件

1) Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。

2) Appender:用于指定日志输出的目的地,可以是控制台、文件、数据库等等。

3) Layout:负责把事件转换成字符串,格式化的日志信息的输出。在logback中Layout对象被封装在encoder中。

1.3 lockback配置

logback会依次读取以下类型配置文件:

1) logback.grovy

2) logback-test.xml

3) logback.xml

1.4 lockback.xml配置文件解析

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <!-- 配置集中管理属性,可以直接使用该属性的值,格式:${name} -->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>

    <!-- 日志输出格式:
         %-5level   : 级别从左显示5个字符宽度
         %d         : 日期
         %c         : 类的完整名称
         %M         : 方法名
         %L         : 行号
         %thread    : 线程名称
         %m         : 信息
         %n         : 换行 -->

    <!-- 格式化输出:%d表示日期, %thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息 %n是换行符 -->

    <!-- 控制台日志输出的appender -->
    <!-- 每个标签的编写都是使用类的set方法,如target标签对应setTarget方法 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 控制输出流对象默认是System.out,可以改为System.err,区别在于字体颜色不同 -->
        <target>System.err</target>
        <!-- 日志消息格式配置 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!-- 文件输出的appender -->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>path/to/log/file.log</file>

        <!-- 日志文件拆分规则 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名模式,按日期拆分,保留最近7天的日志文件 -->
            <fileNamePattern>path/to/log/file-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>

        <!-- 触发拆分的条件,按文件大小拆分,当日志文件大小达到10MB时触发拆分 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>10MB</maxFileSize>
        </triggeringPolicy>

        <!-- 日志消息格式配置 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!-- root logger配置:只有日志的级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录。 -->
    <root level="ALL">
	<!--TRACE(追踪): 提供比DEBUG更详细的信息,用于追踪代码执行流程。
        DEBUG(调试): 用于调试应用程序,提供详细的信息,通常不应该在生产环境中启用。
        INFO(信息): 提供一般性的信息,用于说明应用程序的运行状态,如启动、关闭等。
        WARN(警告): 表示潜在的问题,不会导致应用程序停止运行,但需要引起注意。
        ERROR(错误): 用于表示错误事件,可能导致应用程序无法正常执行。
        OFF(关闭): 用于关闭所有日志记录。
        ALL(所有): 记录所有的日志消息。-->

        <!-- 引用控制台和文件输出的appender,想输出到哪里就加哪个 -->
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

</configuration>

2、lockback快速入门

需求:使用Logback日志框架,纪录系统的运行信息。

实现步骤:

  1. 导入Logback框架到项目中去。
    slf4j-api:日志接口、lockback-core、logback-classic
  2. 将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是Src下)
  3. 创建Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息。
java 复制代码
public static final Logger LOGGER = LoggerFactory.getLogger("类名");


相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习
im_AMBER4 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J4 天前
从“Hello World“ 开始 C++
c语言·c++·学习