当前位置: 首页 > news >正文

SpringBoot整合Logback日志框架

Logback 是一个灵活而高效的日志框架,它是由 Ceki Gülcü 开发的,也是 Log4j 的创建者之一。Logback 旨在成为 Log4j 的替代品,并提供了一系列强大的功能和性能改进。

以下是 Logback 的一些主要特点和功能:

  1. 模块化结构: Logback 由多个模块组成,包括 logback-core、logback-classic 和 logback-access。其中,logback-core 是核心模块,提供了基本的日志功能;logback-classic 是 Log4j 的替代实现,向下兼容 Log4j API,并提供了更高的性能;logback-access 是一个可选的模块,用于记录 Web 应用程序的访问日志。

  2. 灵活的配置: Logback 使用 XML 配置文件(logback.xml)进行配置,可以通过配置文件灵活地配置日志输出格式、日志级别、日志文件路径等各种参数,支持动态重新加载配置。

  3. 多种日志输出: Logback 支持多种日志输出方式,包括输出到控制台、输出到文件、输出到数据库等,可以根据需要配置多个不同的 Appender。

  4. 异步日志: Logback 支持异步日志记录,可以提高日志记录的性能,避免日志记录操作对应用程序性能的影响。

  5. 过滤器支持: Logback 提供了丰富的过滤器功能,可以根据日志消息的内容、级别等条件对日志进行过滤和筛选,灵活控制日志的输出。

  6. 自定义布局: Logback 允许开发者自定义日志的输出格式,可以根据需要定义自己的日志布局模式,满足不同项目的日志格式需求。

  7. 可扩展性: Logback 提供了丰富的插件和扩展点,可以扩展其功能,满足特定项目的需求,例如自定义 Appender、过滤器等。

总的来说,Logback 是一个功能强大、灵活易用的日志框架,适用于各种规模的 Java 项目,能够帮助开发者实现高效、灵活的日志记录和管理。在 Spring 应用程序中,Logback 通常被用作日志记录的主要框架,并与 Spring Boot 紧密集成,为开发者提供了简单而强大的日志记录解决方案。

1、引用Maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.9</version>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.32</version>
</dependency>

2、YAML配置

#日志
logging:#日志级别level:com:test: debug# 设置logback.xml位置config: classpath:logback/logback-spring.xml

3、logback-spring.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><!--定义日志文件的存储地址 --><property name="LOG_HOME" value="../../logs" /><!--<property name="COLOR_PATTERN" value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)" />--><!-- 控制台输出 --><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}:%L - %msg%n</pattern>--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern></encoder></appender><!-- 按照每天生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名 --><FileNamePattern>${LOG_HOME}/webapp-%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件保留天数 --><MaxHistory>30</MaxHistory><maxFileSize>10MB</maxFileSize></rollingPolicy><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}:%L - %msg%n</pattern></encoder></appender><!-- 生成 error html格式日志开始 --><appender name="HTML" class="ch.qos.logback.core.FileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!--设置日志级别,过滤掉info日志,只输入error日志--><level>ERROR</level></filter><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="ch.qos.logback.classic.html.HTMLLayout"><pattern>%p%d%msg%M%F{32}%L</pattern></layout></encoder><file>${LOG_HOME}/error-log.html</file></appender><!-- 生成 error html格式日志结束 --><!-- 每天生成一个html格式的日志开始 --><appender name="FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名 --><FileNamePattern>${LOG_HOME}/webapp-%d{yyyy-MM-dd}.%i.html</FileNamePattern><!--日志文件保留天数 --><MaxHistory>30</MaxHistory><MaxFileSize>10MB</MaxFileSize></rollingPolicy><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="ch.qos.logback.classic.html.HTMLLayout"><pattern>%p%d%msg%M%F{32}%L</pattern></layout></encoder></appender><!-- 每天生成一个html格式的日志结束 --><!--myibatis log configure --><logger name="com.apache.ibatis" level="TRACE" /><logger name="java.sql.Connection" level="DEBUG" /><logger name="java.sql.Statement" level="DEBUG" /><logger name="java.sql.PreparedStatement" level="DEBUG" /><!-- 日志输出级别 --><root level="INFO"><appender-ref ref="STDOUT" /><appender-ref ref="FILE" /><appender-ref ref="HTML" /><appender-ref ref="FILE_HTML" /></root></configuration>

http://www.lryc.cn/news/338671.html

相关文章:

  • 知识图谱与人工智能:携手共进
  • 全栈的自我修养 ———— react实现滑动验证
  • <<、>>和>>>
  • 【C++进阶】RAII思想&智能指针
  • 探索量子计算:打开未来技术的大门
  • C++11 设计模式2. 简单工厂模式
  • RabbitMQ-死信队列常见用法
  • 2024/4/14周报
  • MySQL 社区版 安装总结
  • 二叉排序树的增删改查(java版)
  • linux下coredump问题的定位分析方法
  • 第十届蓝桥杯省赛真题(C/C++大学B组)
  • Scrapy 爬取m3u8视频
  • LVGL简单记录
  • 计算机网络——ARP协议
  • 【C++]C/C++的内存管理
  • 深入理解计算机网络分层结构
  • 亚马逊云科技CTO带你学习云计算降本增效秘诀
  • 快速上手Vue
  • java 目录整理
  • 使用Python的Pillow库进行图像处理书法参赛作品
  • docker 容器指定utf-8编码
  • 单例模式以及常见的两种实现模式
  • Java hashCode() 和 equals()的若干问题解答
  • 高级IO——React服务器简单实现
  • Qt使用插件QPluginLoader 机制开发
  • 双子座 Gemini1.5和谷歌的本质
  • 二百三十、MySQL——MySQL表的索引
  • 并发编程之ThreadLocal使用及原理
  • 软件测试 测试开发丨Pytest结合数据驱动-yaml,熬夜整理蚂蚁金服软件测试高级笔试题