【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的日志管理:Logback 的集成

 <前文回顾>

点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link

<今日更新>

一、开篇整活儿

今儿个咱唠唠 Spring Boot 里头的日志管理。这玩意儿吧,说大不大,说小不小,整好了是锦上添花,整不好就是火上浇油。你要是刚入门,那可得悠着点儿,别一上来就整得自己“翻车”了。

二、Logback 是啥玩意儿?

Logback 是 Java 里头的一个日志框架,比 Log4j 还高级,性能更好,功能更全。Spring Boot 里头默认就集成了这玩意儿,用起来贼方便。

1. 基本用法

Logback 的配置文件是 logback.xml,你只要把这文件放到 src/main/resources 目录下,Spring Boot 就会自动加载。

XML Code

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="info">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个控制台输出的日志格式,%d 是日期,%-5level 是日志级别,%logger{36} 是日志名称,%msg 是日志内容,%n 是换行。

2. 在代码中使用

你可以在代码里头用 Logger 对象来记录日志。

Java Code

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class MyService {

    private static final Logger logger = LoggerFactory.getLogger(MyService.class);

    public void doSomething() {

        logger.info("开始干活儿");

        // 一些业务逻辑

        logger.info("干完活儿了");

    }

}

这段代码里头,MyService 类里头用 Logger 对象记录了日志,info 方法用来记录普通信息。

三、Logback 的高级配置

Logback 的功能贼强大,你可以配置日志的输出格式、输出位置、日志级别啥的。

1. 输出到文件

你可以把日志输出到文件里头,方便以后查看。

XML Code

<configuration>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>logs/app.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>

            <maxHistory>30</maxHistory>

        </rollingPolicy>

        <encoder>

            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="info">

        <appender-ref ref="FILE" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个文件输出的日志格式,logs/app.log 是日志文件的路径,logs/app.%d{yyyy-MM-dd}.log 是日志文件的滚动规则,maxHistory 是保留的日志文件数量。

2. 日志级别

你可以配置日志的级别,控制日志的输出。

XML Code

<configuration>

    <logger name="com.example.demo" level="debug" additivity="false">

        <appender-ref ref="STDOUT" />

    </logger>

    <root level="info">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了 com.example.demo 包的日志级别是 debug,additivity="false" 表示不继承父级的日志配置。

3. 异步日志

你可以配置异步日志,提升性能。

XML Code

<configuration>

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">

        <appender-ref ref="STDOUT" />

    </appender>

    <root level="info">

        <appender-ref ref="ASYNC" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个异步日志输出,AsyncAppender 是异步日志的类。

四、自定义日志格式

你可以自定义日志的输出格式,满足不同的需求。

1. 自定义日志格式

XML Code

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="info">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个自定义的日志格式,%d 是日期,%-5level 是日志级别,%logger{36} 是日志名称,%msg 是日志内容,%n 是换行。

2. 自定义日志颜色

你可以给日志加上颜色,方便查看。

XML Code

<configuration>

    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss}){faint} %clr(%-5level) %clr(%logger{36}){cyan} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="info">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个带颜色的日志格式,%clr 是颜色转换器,{faint} 是淡色,{cyan} 是青色。

五、Spring Boot 里头的日志坑点

1. 日志级别冲突

Spring Boot 里头,日志级别配置可能会冲突。你要是配置了 application.properties 里头的日志级别,那 logback.xml 里头的配置就不起作用了。

Properties Code

logging.level.com.example.demo=debug

这段代码里头,application.properties 配置了 com.example.demo 包的日志级别是 debug。

2. 日志文件路径

Spring Boot 里头,日志文件的路径可能会出问题。你要是配置了 application.properties 里头的日志文件路径,那 logback.xml 里头的配置就不起作用了。

Properties Code

logging.file.name=logs/app.log

这段代码里头,application.properties 配置了日志文件的路径是 logs/app.log。

3. 日志文件大小

Spring Boot 里头,日志文件的大小可能会出问题。你要是配置了 application.properties 里头的日志文件大小,那 logback.xml 里头的配置就不起作用了。

Properties Code

logging.file.max-size=10MB

这段代码里头,application.properties 配置了日志文件的最大大小是 10MB。

专有名词解释

  1. Logback:Java 里头的一个日志框架,比 Log4j 还高级,性能更好,功能更全。
  2. logback.xml:Logback 的配置文件,用来配置日志的输出格式、输出位置、日志级别啥的。
  3. Logger:Java 里头的一个日志对象,用来记录日志。
  4. appender:Logback 里头的一个组件,用来指定日志的输出位置。
  5. encoder:Logback 里头的一个组件,用来指定日志的输出格式。
  6. rollingPolicy:Logback 里头的一个组件,用来指定日志文件的滚动规则。
  7. AsyncAppender:Logback 里头的一个组件,用来实现异步日志输出。
  8. conversionRule:Logback 里头的一个组件,用来指定日志格式的转换规则。
  9. ColorConverter:Spring Boot 里头的一个组件,用来给日志加上颜色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络知识点整理

目录 ​一、深度学习基础与流程 二、神经网络基础组件 三、卷积神经网络&#xff08;CNN&#xff09;​编辑 四、循环神经网络&#xff08;RNN&#xff09;与LSTM 五、优化技巧与调参 六、应用场景与前沿​编辑 七、总结与展望​编辑 一、深度学习基础与流程 机器学习流…

【sql优化】where 1=1

文章目录 where 11问题描述错误实现正确实现性能对比测试 where 11 问题描述 在动态 SQL 拼接场景中&#xff0c;开发者常使用 WHERE 11 简化条件拼接逻辑&#xff08;避免处理首个条件的 AND&#xff09;。理论上&#xff0c;数据库优化器会忽略 11&#xff0c;但字符串拼接…

车载以太网网络测试 -24【SOME/IP概述】

目录 1 摘要2 车载SOME/IP 概述2.1发展背景以及应用2.1.1车载 SOME/IP 背景2.1.2 车载 SOME/IP 应用场景 2.3 什么是SOME/IP2.3.1 SOME/IP定义2.3.2 SOME/IP在协议栈中的位置 3 SOA是什么4 SOME/IP主要功能5 SOME/IP标准 1 摘要 本文主要介绍SOME/IP的背景以及在车载行业的发展…

vue3中,route4,获取当前页面路由的问题

首先应用场景如下&#xff1a; 在main.js里面&#xff0c;引入的是路由的配置文件&#xff0c;如下&#xff1a; import {router} from /router; app.use(router); 路由配置文件router.js如下&#xff1a; import { createRouter, createWebHistory } from vue-router; imp…

ip改变导致的数据库连接不上

前言 需要用到路由器&#xff0c;所以先把家里的路由器给拆了先用着。新的路由器到了之后&#xff0c;更换上新的路由器之后&#xff0c;调用到服务会有报错&#xff0c;记录一下更换路由器之后ip重新分配服务可能会报的错. 进一步可以看到有关网路在服务当中的影响。 正文 …

Chrome 开发环境快速屏蔽 CORS 跨域限制!

Chrome 开发环境快速屏蔽 CORS 跨域限制【详细教程】 ❓ 为什么需要临时屏蔽 CORS&#xff1f; 在前后端开发过程中&#xff0c;我们经常会遇到 跨域请求被浏览器拦截 的问题。例如&#xff0c;你在 http://localhost:3000 调用 https://api.example.com 时&#xff0c;可能会…

【力扣hot100题】(009)和为K的子数组

还是太菜了&#xff08;我&#xff09;&#xff0c;写了半天滑动窗口&#xff0c;然后看了答案又写了半天时间超限…… 总之就是记录每前n个子串的和&#xff0c;然后使用hash存储和为某个值出现的次数&#xff0c;每次求得新和就看看是否存在前面新和-k的字符&#xff0c;有的…

使用 rsync 进行服务器文件同步与优化

使用 Rsync 工具在两台 Linux 服务器之间同步文件 Rsync 是一种高效的文件同步工具&#xff0c;它可以在本地或远程服务器之间同步文件和目录。Rsync 通过仅传输文件的变化部分来减少数据传输量&#xff0c;因此特别适合用于定期备份或同步大量数据。本文将详细介绍如何将 A 服…

卷积神经网络 - 微步卷积、空洞卷积

一、微步卷积 微步卷积&#xff08;Fractionally Strided Convolution&#xff09;&#xff0c;通常也称为转置卷积&#xff08;Transposed Convolution&#xff09;或反卷积&#xff08;Deconvolution&#xff09;&#xff0c;是深度学习&#xff08;尤其是卷积神经网络&…

详解java体系实用知识总结

0.java技术能力框架 基础模块应用模块综合模块技术岗位与面试流程常用工具集系统架构设计计算机基础常用框架微服务架构jvm原理缓存容器化多线程队列云计算&#xff08;阿里云/aws&#xff09;设计模式数据库数据结构与算法 1.常用设计模式与应用场景 工厂模式&#xff1a;s…

设计模式之创建型5种

设计模式 为什么设计模式是23种创建型 对象创建为什么设计模式是23种 设计模式之所以被归纳为23种,而非其他数量,源于GoF(Gang of Four)在1994年的系统性总结和分类。这一数量的确定并非偶然,而是基于以下核心原因: 他们遵循“大三律”(Rule of Three),即只有经过三个…

Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)

文章目录 Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)ONNX基本概念ONNX(Open Neural Network Exchange)ONNX Runtime ONNX Runtime 在Oracle数据库中的集成参考 Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange) 我们在看【…

统一语言学习范式

摘要 现有的预训练模型通常针对特定类别的问题。迄今为止&#xff0c;关于何种架构和预训练设置应为最佳似乎仍未达成共识。本文提出了一个统一的框架&#xff0c;用于预训练在多种数据集和设置中普遍有效的模型。我们首先将架构原型与预训练目标这两个常被混为一谈的概念进行…

Flutter项目升级到指定版本的详细步骤指南

一、升级前的准备工作 备份项目 使用Git提交当前所有修改&#xff1a;git commit -am "Pre-upgrade backup"或直接复制项目文件夹 查看当前环境信息 flutter --version flutter doctor二、升级Flutter SDK到指定版本 方法1&#xff1a;通过版本管理工具升级&#x…

22、web前端开发之html5(三)

六. 离线存储与缓存 在网络环境不稳定或需要优化资源加载速度的场景下&#xff0c;离线存储与缓存技术显得尤为重要。HTML5引入了多种离线存储和缓存机制&#xff0c;帮助开发者提升用户体验。本节将详细介绍Application Cache、localStorage、sessionStorage以及IndexedDB等技…

用HTML和CSS生成炫光动画卡片

这个效果结合了渐变、旋转和悬浮效果的炫酷动画示例&#xff0c;使用HTML和CSS实现。 一、效果 二、实现 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&quo…

【嵌入式学习2】数组

目录 ## 数组概念 ## 数组使用 ## 数组初始化 ## 数组名 ## 数组长度 ## 数组相关题目 1、找最大值 2、逆置 ## 数组和指针 指针加整数的含义 ## 指针数组 ## 数组名做函数参数 ## 函数参数传递数组 1、在函数内部 2. 在函数外部 ## 多维数组 使用下标访问 #…

C++中的判断与循环

一.if判断语句 1.程序中的判断&#xff1a; if (要执行的判断&#xff0c;最后的返回值要是bool型的数据) {如果为真&#xff0c;要执行的代码段; } #include"iostream" using namespace std;int main() {int ans;cin >> ans;if (ans > 1000) {cout <…

前端开发中生成网站的favicon.ico文件的软件推荐及使用方法

日常网站开发中&#xff0c;我们经常需要生成网站的favicon.ico文件&#xff0c;今天我在这里来推荐几个编辑.ico(也可将图片格式转化为.ico)图片&#xff0c;而且免费的那软件&#xff1a; GIMP&#xff1a;一个功能强大的开源图像编辑软件&#xff0c;支持多种文件格式&#…

浅谈WebSocket-FLV

FLV是一种视频数据封装格式&#xff0c;这种封装被标准通信协议HTTP-FLV和RTMP协议应用。 而WebSocket-FLV是一种非标的FLV封装数据从后端发送到前端的一种方式。 在WebSocket的url请求中&#xff0c;包含了需要请求设备的视频相关信息&#xff0c;在视频数据到达时&#xff0c…