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

Logback 日志介绍及与Spring Boot 的整合 【保姆级教程】

Logback介绍

Logback是SpringBoot框架的默认的日志,内容如下图所示:
在这里插入图片描述
Log4J 的创始人 Ceki Gülcü 和另一位 Log4J 贡献者 Sébastien Pennec 设计了 ​​logback。他们设计的 Logback 具有快速和通用的特性,可以在不同的环境下工作。
Logback 由三个模块组成:
logback-core:构成 logback-classic 和 logback-access 的基础。要执行日志记录,需要 logback-classic 或 logback-access。
logback-classic:依靠 logback-core 提供日志记录服务。
logback-access:为 servlet 容器(如 Tomcat 和 Jetty)提供 HTTP 访问日志功能。
在这里插入图片描述
Logback 原生实现了 Java 的简单日志外观 (SLF4J) API。
简而言之,SLF4J 是各种日志框架的外观。开发人员可针对SLF4J API 编写日志代码。在部署时灵活地插入所需的日志框架。
由于 logback 原生实现了 SLF4J,因此额外的 SLF4J API 层不会产生任何性能开销,这是 Logback 相对于其他框架的一点优势。

Logback 支持 TRACEDEBUGINFOWARNERROR 五种级别


在这里插入图片描述
在本地开发时,通常将日志级别设置为 DEBUG。这将提供详细的日志消息以供开发者使用。部署到生产环境时,通常将日志级别设置为 ERROR,这是为了避免日志中充斥过多的调试信息。

使用方法

spring-boot-starter-web自动包含 Logback 相关依赖,因此在pom.xml文件中添加如下依赖即可

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

resources目录下创建logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration >
    <jmxConfigurator/>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />

    <!--这个属性设置了应用名称,用于在日志文件名中生成特定的前缀,可以根据项目名称修改为其他名称(注意下面的引用也要一起更改)-->
    <property scope="context" name="appName(可以改)" value="weblog(这里可根据需要更改)" />
    <!-- 自定义日志输出路径,以及日志名称前缀 -->
    <property name="LOG_FILE" value="/app/weblog/logs/${appName}.%d{yyyy-MM-dd}"/>
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
    <!--<property name="CONSOLE_LOG_PATTERN" value="${FILE_LOG_PATTERN}"/>-->

    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 日志文件输出的文件名 -->
        <FileNamePattern>${LOG_FILE}-%i.log</FileNamePattern>
        <!-- 日志文件保留天数 -->
        <MaxHistory>30</MaxHistory>
        <!-- 日志文件最大的大小 -->
        <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>10MB</maxFileSize>
        </TimeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!-- 格式化输出:%d 表示日期,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度 %errorMessage:日志消息,%n 是换行符-->
        <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- dev 环境(仅输出到控制台) -->
    <springProfile name="dev">
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
        <root level="info">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>

    <!-- prod 环境(仅输出到文件中) -->
    <springProfile name="prod">
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
        <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
</configuration>

我们可以在applilcation.yml配置文件设置日志级别。比如设置成warn级别,warn以下的部分都不会显示【我在开发环境一般不会设置这个部分】

logging:
  level:
    root: warn

使日志生效的配置放到 application-prod.yml ,即生产文件中即可:

logging:
  config: classpath:logback-spring.xml

可在application.yml中配置当前环境是生产环境还是开发环境

spring:
  profiles:
    # 激活 dev 环境
    active: dev

将dev改为prod,环境便进行了更改

spring:
  profiles:
    # 激活 prod 环境
    active: prod

以下内容为logback-spring.xml中的部分,这个部分指定了开发环境设置为控制台输出,而生产环境设置为文件输出

    <!-- dev 环境(仅输出到控制台) -->
    <springProfile name="dev">
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
        <root level="info">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>

    <!-- prod 环境(仅输出到文件中) -->
    <springProfile name="prod">
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
        <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

生产环境时,以下部分的内容进行路径更改,可以输入日志文件到目标路径里
在这里插入图片描述

使用示例

在这里插入图片描述
比如这个自定义的全局处理异常中,设定了捕获到其他异常后,控制台输出的内容,使用log.error()…来实现

在这里插入图片描述
在进行异常处理的时候,可以进行使用。


http://www.kler.cn/a/393274.html

相关文章:

  • 曹操为什么总是亲征
  • 响应式网页设计--html
  • Linux 系统管理和监控命令---- auditctl命令
  • 【数据结构】交换排序——冒泡排序 和 快速排序
  • JVM详解:JVM的系统架构
  • 网页版五子棋——对战模块(服务器端开发②)
  • 数据库基础(11) . SQL脚本
  • 在arm64架构下, Ubuntu 18.04.5 LTS 用命令安装和卸载qt4、qt5
  • golang将word、excel转换为pdf
  • JAVA:探索 EasyExcel 的技术指南
  • 哈希表的实现--C++
  • 【Redis】Redis的一些应用场景及使用策略
  • Android Studio使用c++编写
  • MATLAB和R及Python伪时间分析
  • 泷羽sec学习打卡-Linux基础2
  • Webpack 1.13.2 执行 shell 命令解决 打印时没有背景色和文字颜色的问题
  • 【云计算解决方案面试整理】3-7主流云计算平台、云计算架构、安全防护
  • ubuntu内核切换network unclaimed 网卡丢失
  • nginx配置负载均衡详解
  • 【聚类】Kmeans聚类方法概述及其MATLAB实现
  • 前端单元测试框架 引入说明
  • SpringBoot(四)配置拦截器、filter、跨域
  • Day41 | 动态规划 :完全背包应用 完全平方数单词拆分(类比爬楼梯)
  • 【Paper Note】跨音频-视觉匹配识别的3D CNN
  • Apache Doris 技术系列文章:高级特性与性能优化
  • SpringBoot(三)集成日志