在 Spring Boot中配置日志

news/2024/4/30 20:54:11/文章来源:https://blog.csdn.net/allway2/article/details/127978833

Spring Boot 在引擎盖下使用Apache Commons Logging。但是,它允许您选择所需的日志记录库。让我们来看看使用 Spring Boot 时的一些配置和最佳实践。

目录

  • 概述
  • 简单日志记录示例
  • 配置日志记录
    • 更改日志级别
    • 将日志写入文件
    • 在 Spring 引导中更改日志记录模式
  • 对日志条目进行颜色编码
  • 自定义日志记录配置文件
  • Log4j2 用于 Spring 引导日志记录
  • 总结
  • 相关

概述

默认情况下,如果使用启动器,则应用程序将使用Logback进行日志记录。该框架还提供各种日志路由,以确保其他日志记录库开箱即用。这样,您可以将 Logback 与 Log4j2 或 JUL 交换。

在进一步讨论之前,有许多用于Java的日志记录框架。在大多数情况下,您不需要在 Spring 引导中更改日志记录依赖项。

简单日志记录示例

让我们使用示例控制器演示 spring-boot 中的日志记录。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;@Controller
public class TestController {private static final Logger log = LoggerFactory.getLogger(TestController.class);@RequestMapping("/test")@ResponseBodyString hello(@RequestParam("name") String name) {log.trace("Hello {}", name);log.debug("Hello {}", name);log.info("Hello {}", name);log.warn("Hello {}", name);log.error("Hello {}", name);return "Hello";}
}

使用上述控制器,如果您点击http://localhost:8080/test?name=John Doe,那么您将在控制台输出中看到一些日志。就是这样,您已经在项目中成功使用了日志记录。

最好的部分是,您没有配置任何内容。

配置日志记录

Spring 引导带有一些用于日志记录的默认配置。例如,它开箱即用地打印到控制台,它具有详细的消息日志模式,我们将详细查看,最后,它仅打印具有 INFO 或更高版本的日志级别。

让我们看看如何覆盖这些行为。

更改日志级别

如果您已经看到了上一节中的示例,则日志将仅包含 INFO 或更高版本的打印条目。但是,如果您希望覆盖此行为,则 Spring boot 允许您根据类和包配置日志记录级别。

例如,您可以为TestController启用跟踪日志,如下所示。

 

logging.level.com.springhow.examples.logging.controllers.TestController=TRACE

如果您希望为包下的所有类启用调试日志,则可以像下面这样操作。

 

logging.level.com.springhow.examples.logging.controllers=DEBUG

您还可以将不同的包和类分组到组中。例如,可以将与 API 相关的所有包列出到记录器组中。然后,您可以为其指定日志记录级别。

 

#Define a group logging.group.api=com.springhow.web,com.springhow.services,com.springhow.domain #Specify a logging level for that group logging.level.api=DEBUG

使用此方法,您无需定义三个单独的日志记录级别。此外,它使配置文件看起来干净。

为了方便起见,Spring boot 提供了Websql以及日志记录组,以便我们可以轻松地配置它们以进行调试。

将日志写入文件

默认情况下,Spring 引导将所有日志打印到控制台。但是,通过以下配置,您也可以启用基于文件的日志记录。例如,以下配置在当前工作目录中创建一个日志文件。

 

logging.file.name=springhow.log

您还可以为文件名提供完整路径

 

logging.file.name=/var/log/springhow.log

或者,您可以提供日志记录文件路径。

 

logging.file.path=/var/log/

使用“logging.file.path”的唯一例外是 Spring boot 将在给定路径下创建一个名为 “spring.log” 的日志文件。

对于WINDOWS,所有绝对路径都从C:\drive 转换。因此,“/var/log/”变为“c:\var\log\”。

最重要的是,如果您同时使用 logging.file.name和logging.file.path,则logging.file.name将优先。

在 Spring 引导中更改日志记录模式

Spring Boot 的默认记录器格式/模式如下所示。

对于许多人来说,这种充满活力的伐木模式绰绰有余。但是,如果您希望更改此日志模式,则可以使用“logging.pattern.console”和“logging.pattern.file”属性。

在下面的示例中,我们可以看到覆盖日志格式是多么容易。

 

logging.pattern.console=%p %d{yyyy-MM-dd HH:mm:ss.SSS} : [%t] %-40.40logger{39} : %m%n

如图所示,日志级别位于行首,不再有鲜艳的颜色。有关详细信息,请查看登录模式文档。

对日志条目进行颜色编码

在支持 ANSI 颜色的环境中,您可以使用可以使用不同颜色的不同日志组件的模式。例如,可以使用 %clr(%p) 通过日志记录级别来设置颜色。此处,%p 表示日志记录级别。

在这里,所有的颜色映射都由弹簧启动提供。如果您希望为日志组件指定颜色,也可以这样做。

 

logging.pattern.console=%clr(%p) %d{yyyy-MM-dd HH:mm:ss.SSS} : [%t] %clr(%-40.40logger{39}){red} : %m%n

上述配置的结果是,

logging.pattern.file设置颜色编码是没有意义的,因为文件不会转换 ANSI 颜色编码。所以你会看到一堆胡言乱语。

自定义日志记录配置文件

所有这些默认行为都是可能的,因为 Spring 引导附带了默认的日志记录配置文件。它还为我们提供了在某种程度上配置这些配置的方法。

但是,如果您希望使用更野蛮的配置,那么您也可以提供自己的配置。只需在src/main/resources/下提供一个logback.xmllogback-spring.xml您就可以开始了。

<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!-- encoders are assigned the typech.qos.logback.classic.encoder.PatternLayoutEncoder by default --><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="debug"><appender-ref ref="STDOUT" /></root>
</configuration>

请注意,一旦您添加 logback.xml,就无法通过application.properties 自定义日志记录。

您还可以使用“logging.config”属性从外部位置加载日志记录配置。

 

logging.config=/etc/myapp/logback.xml

使用自定义配置,您几乎可以执行上述所有自定义。但唯一的问题是,您无法轻松地将 Spring 启动应用程序切换到不同的日志记录系统。例如,如果要切换到 Log4j2,则需要为该特定系统重新创建配置。

Log4j2 用于 Spring 引导日志记录

如果您没有自定义配置,那么在 Spring 启动中更改日志记录系统非常简单。例如,您可以通过使用 spring-boot-starter-log4j2 删除默认的spring-boot-starter-logging来交换到Log4J2

日志记录启动器是核心启动器(弹簧启动启动器)的一部分。因此,您可以安全地从那里删除日志记录启动器。

 
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

即使您有许多不同的启动器,例如“web”,“jpa”等,它们现在都将排除用于日志记录的启动器,并将使用log4j2中的配置。最好的部分是,您不必更改 application.properties( 如果您尚未指定与 logback 相关的任何内容)。

总结

到目前为止,我们学习了 Spring 引导中的日志记录如何工作,如何配置它们,以及如何在 Spring 引导应用程序中用 log4j2 替换 logback。

  • Apache Commons Logging – 解释
  • 在 Spring 引导中添加 Servlet 过滤器的方法
  • 在 Spring 引导中显示来自 Spring Data JPA/hibernate 的 SQL
  • 春季启动横幅 – 完整指南
  • Spring 框架中的 Setter 依赖注入

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

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

相关文章

弹簧(压簧)力度计算与设计

弹簧&#xff08;压簧&#xff09;力度计算与设计弹簧的种类什么是弹性系数弹簧的材料常用材料与用途弹性系数与哪些因素有关弹簧力度设计与计算弹簧收尾设计弹簧是一种利用弹性来工作的机械零件。一般用弹簧钢制成。利用它的弹性可以控制机件的运动、缓和冲击或震动、储蓄能量…

优思学院|精益六西格玛的成本效益怎么样?

所有精益六西格玛的实施都以项目工作为中心&#xff0c;因此可以用投资回报率&#xff08;ROI&#xff09;确定成本效益。项目可以集中在通过改善营收或降低成本&#xff08;或两者&#xff09;来提高净利润。 它们也可以侧重于通过减少资产&#xff08;通常是库存或应收账款&…

项目实战——匹配系统(上)

ps&#xff1a;从这篇文章开始&#xff0c;整个项目最精华&#xff08;困难&#xff09;的部分就要来了&#xff0c;因此这里会把每一个步骤细分&#xff0c;并且说一下自己对于每个步骤的思考和理解&#xff08;博主水平有限&#xff0c;错误在所难免&#xff0c;欢迎指出讨论…

【web渗透思路】敏感信息泄露(网站+用户+服务器)

目录 一、信息泄露示例 1、示例&#xff1a; 二、泄露方式 1、原理&#xff1a; 三、泄露危害 1、危害&#xff1a; 四、泄露挖掘 1、爬虫文件 2、目录信息 3、越权访问 4、开发注释、js文件 5、错误提示 6、调试信息 7、备份等目录文件 8、配置不安全 9、版本控…

相控阵天线(五):稀疏阵列(概率密度稀疏法、多阶密度加权法、迭代傅里叶(IFT)法)

目录简介稀疏线阵概率密度稀疏法多阶密度加权法迭代傅里叶(IFT)综合法对称分布稀疏阵列建模仿真简介 稀疏阵是在不明显改变阵列波束宽度的情况下去掉一些阵元&#xff0c;可以用满阵列的几分之一的阵元构造一个减低了增益的高方向性阵列&#xff0c;符合大型阵列设计中降低成本…

丰田+比亚迪「围攻」大众,明年或将「让出」榜首之位

大众&#xff0c;正在经历最艰难的时刻。 高工智能汽车研究院监测数据显示&#xff0c;今年1-10月&#xff0c;大众集团旗下大众品牌乘用车在中国市场的交付上险同比下滑11.5%&#xff0c;而作为老对手&#xff0c;排名第二的丰田&#xff0c;则是同比增长13.72%。 豪华品牌部…

解析分布式数据库的技术框架及其在金融行业中的应用规划

早期银行业务系统处理的主要是交易型数据,数据量较少,传统关系型数据库(如Oracel、DB2等)已足够应对。随着互联网金融业务的快速发展,业务系统需要处理的数据呈爆炸式增长,传统数据库无法满足业务系统越来越高的数据处理能力要求。于是,新型的分布式数据库系统应运而生。…

Java内部类解析

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaSE基础 格言&#xff1a;目之所及皆为回忆&#xff0c;心之所想皆为过往 目录 什么是内部类 静态内部类 静态内部类访问外部类的规则 外部类访问静态内部类的规则 实例化静态内部类 非静态内部类 内部类访问外部类…

双向链表的实现

这里以结构体的方式来实现链表&#xff0c;也可以使用类。结构体在没有修饰符的情况下&#xff0c;默认是共有访问。如有不对&#xff0c;希望能指出。 目录 一、链表和结点结构体的声明 (ListNode.h) 二、链表各个功能的实现 1、增 (1) 构造函数&#xff08;创建链表头结点…

信息安全工程实践笔记--Day1 信息收集漏洞扫描

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录实验目标&#xff08;一&#xff09;信息收集一、搜索引擎二、域名1.whois 查询2.子域名查询3.真实ip(1)什么是cdn&#xff1f;(2) 如何验证目标服务器是否挂载cdn&a…

零基础自学javase黑马课程第十六天

零基础自学javase黑马课程第十六天 ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&#x1f39e;2022年11月21日&…

中国市场杂志社中国市场编辑部2022年第32期目录

前沿理论 新冠肺炎疫情下跨境冷链物流的新思考——以大连冷链业疫情为例 廖燕莲;谷玉红;尚书山; 1-3《中国市场》投稿&#xff1a;cnqikantg126.com 数字经济背景下数字服务税问题探析 李瑞玲; 4-6 我国工业能源效率提升的阻碍及其对策探究 韩洁平;田振东;张诗雅; …

Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理

Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一、简单介绍 二、常用命令 1、 打开终端 &#xff1a;Ctrl Alt T 2、退出终端&#xff1a;exit 3、查看安装 Ubuntu 版本/显示系统等信息&#xff1a;uname…

Advances in Graph Neural Networks笔记4:Heterogeneous Graph Neural Networks

诸神缄默不语-个人CSDN博文目录 本书网址&#xff1a;https://link.springer.com/book/10.1007/978-3-031-16174-2 本文是本书第四章的学习笔记。 感觉这一章写得不怎么样。以研究生组会讲异质图神经网络主题论文作为标准的话&#xff0c;倒是还行&#xff0c;介绍了HGNN的常见…

csdn月入过万的作者是如何练成的?

很多年前&#xff0c;我有一个成为作家的梦想。 后来从事了技术&#xff0c;觉得与作家梦越来越远了。 虽然梦想远去&#xff0c;但写字的欲望没有停止。 这些年&#xff0c;一直在有道云笔记上记录自己的工作心得&#xff0c;偶尔会来csdn上写一写。 我在csdn真正发力的时候…

openGauss数据库客户端连接工具之Datastudio安装

Datastudio使用前电脑必须安装jdk1.8版本或者1.11版本&#xff0c;如未安装可点击以下连接&#xff0c;参考第一步把jdk给安装成功。 点击此处查看jdk安装步骤 Datastudio下载地址&#xff1a;软件包|Datastudio 下载完成后&#xff0c;解压安装包&#xff0c;双击exe文件打开…

链表中快慢指针的应用

目录 一、链表的中间结点 二、回文链表 三、链表中倒数第K个结点 四、删除链表的倒数第n个结点 五、环形链表 六、环形链表Ⅱ 一、链表的中间结点 给定一个头结点为 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间…

基于Spring Cloud的架构使用学习升级之路

引言 Spring Cloud全家桶用了挺长时间了&#xff0c;很长一段时间都是基于已有的架构进行需求研发。今年成为团队技术负责人&#xff0c;承担了新的项目&#xff0c;这是很好的一个机会&#xff0c;于是开启了项目架构升级之路。 架构&#xff0c;是团队项目的根基。在一个团…

为什么开源在线表单工具能做好数据管理?

在数字化时代&#xff0c;数据的有效应用和管理可以说是企业的无形资产&#xff0c;做好数据管理既能提升办公效率&#xff0c;又能帮助企业从规律的数字化管理中获取高效的管理策略。那么&#xff0c;什么样的开源在线表单工具可以实现这一目的&#xff1f;对于企业而言&#…

token的使用

一&#xff1a;什么是token及token的作用&#xff1f; 1.什么是token&#xff1f; Token是首次登录时&#xff0c;由服务器下发&#xff0c;作为客户端进行请求时的一个令牌。当请求后台方法时&#xff0c;用于身份验证 当第一次登录后&#xff0c;服务器生成一个Token便将此…