SpringBoot项目中使用Lombok插件中Slf4j日志框架

前言:idea需要安装lombok插件,因为该插件中添加了@Slf4j注解,可以将@Slf4j翻译成

 private static final org.slf4j.Logger logger = LoggerFactory.getLogger(this.XXX.class);

springboot本身就内置了slf4j日志框架,所以不需要单独引用slf4j的依赖。

一、入门

1、添加lombok依赖

        <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>

2、添加配置

#日志配置
logging:config: classpath:logback-spring.xml  #指定项目启动的时,读取logback-spring.xml日志配置文件,文件名最好不要使用logback.xmllevel: #配置指定包的路径下应用程序的日志记录和日志级别。root: infospringfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator: errororg.springframework: warnfile:path: D:\sinux_2023\project\phm\724_3\exe\logs #设置日志输出路径name: phm.log #设置日志文件的名称

3、配置日志样式

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true"><!-- 获取yml中的log地址 --><springProperty scope="context" name="logPath" source="logging.file.path"/><springProperty scope="context" name="logName" source="logging.file.name"/><!-- 应用名称 --><property name="APP_NAME" value="PHMServer"/><!--定义日志文件的存储地址--><property name="LOG_HOME" value="${logPath}"/>
<!--    <property name="LOG_HOME" value="/logs/${APP_NAME}"/>--><!-- 定义日志格式  --><property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/><!-- 高亮日志格式  --><property name="HIGHLIGHT_PATTERN" value="%yellow(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %green(%logger{50}) - %highlight(%msg) %n"/><!-- 控制台输出-高亮 --><appender name="CONSOLE-WITH-HIGHLIGHT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${HIGHLIGHT_PATTERN}</pattern></encoder></appender><!--文件输出的格式设置 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false --><prudent>false</prudent><!-- 日志日常打印日志文件,生成日志示例:/logs/log-test/info.log --><file>${LOG_HOME}/${logName}</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 压缩日志的路径和日志格式,示例:info-2023-05-26_21.log.zip,%d{yyyy-MM-dd}:表示文件名称包含日期,%i:表示当前是第几个压缩文件 --><fileNamePattern>${LOG_HOME}/info-%d{yyyy-MM-dd}_%i.log.zip</fileNamePattern><!-- 如果按天来回滚,则最大保存时间为180天,180天之前的都将被清理掉 --><maxHistory>180</maxHistory><!-- 日志总保存量为10GB,超过该日志总量的最早的日志压缩包会被清除 --><totalSizeCap>10GB</totalSizeCap><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><!--文件达到 最大100MB时会被压缩和切割 --><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></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} - %msg%n</pattern></encoder></appender><!-- 日志输出级别 --><!--logger 有两种级别,一种是 root,一种是普通的 logger,logger 是用来设置某一个包或者具体的某一个类的日志打印机级别,以及制定的 appender。logger 有三个属性- name:用来指定此 logger 约束的某一个包或者具体的某一个类- level:用来设置打印级别,- addtivity:是否向上级 logger 传递打印信息。默认是 true每个 logger 都有对应的父级关系,它通过包名来决定父级关系,root 是最高级的父元素。--><logger name="org.springframework" level="INFO"/><logger name="com.sinux.*" level="INFO"/><root level="INFO"><appender-ref ref="CONSOLE-WITH-HIGHLIGHT"/><appender-ref ref="FILE"/></root></configuration>

4、使用

@SpringBootApplication
@Slf4j//日志注解
@EnableWebMvc //SpringBoot 整合Swagger报错,Failed to start bean ‘documentationPluginsBootstrapper‘;nested exception ,在启动类添加注解@EnableWebMvc。
public class SystemApplication {public static void main(String[] args) {SpringApplication.run(SystemApplication.class, args);log.info("|Spring容器启动|XX系统启动成功!");}}

二、注意事项

1、使用logback-spring.xml的原因

如果日志配置文件的名称是logback.xml,logback配置会先于Spring之前加载,导致无法使用扩展功能。

如果日志配置文件的名称是logback-spring.xml,该配置文件晚于application.yml加载;

在文件中,我们需要使用application.yml中的日志配置路径,所以需要logback-spring.xml。

获取yml中日志路径的语法:

<!-- 获取yml中的log地址 -->
<springProperty scope="context" name="logPath" source="logging.file.path"/>
<springProperty scope="context" name="logName" source="logging.file.name"/><!--定义日志文件的存储地址-->
<property name="LOG_HOME" value="${logPath}"/>

三、效果图

 

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

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

相关文章

【2023】Redis实现消息队列的方式汇总以及代码实现

Redis实现消息队列的方式汇总以及代码实现 前言开始前准备1、添加依赖2、添加配置的Bean 具体实现一、从最简单的开始&#xff1a;List 队列代码实现 二、发布订阅模式&#xff1a;Pub/Sub1、使用RedisMessageListenerContainer实现订阅2、还可以使用redisTemplate实现订阅 三、…

小白到运维工程师自学之路 第六十二集 (docker持久化与数据卷容器)

一、概述 Docker持久化是指将容器中的数据持久保存在主机上&#xff0c;以便在容器重新启动或迁移时不丢失数据。由于Docker容器是临时和可变的&#xff0c;它们的文件系统默认是易失的&#xff0c;这意味着容器中的任何更改或创建的文件都只存在于此容器的生命周期内。但是&a…

小主机折腾记16

7月折腾了 1.2500s&#xff0c;2550k&#xff0c;e3 1225的性能测试 结果如下图 总结如下&#xff1a; a.2500s e3 1225 2390t 差别不大 b.1333频率相对1066频率内存提升12%左右 c.为什么少了2550k&#xff0c;因为装上去风扇尬转&#xff0c;没画面&#xff0c;我猜是因为…

node.js判断元素是否包括

在Node.js中&#xff0c;可以使用Array.prototype.some()方法来判断数组中是否包含某个元素。下面是一个示例代码&#xff1a; const arr [ { ‘_android:name’: ‘com.eg.android.AlipayGphone’ }, { ‘_android:name’: ‘com.eg.android.AlipayGphoneRC’ }, { ‘_andro…

助力青少年科技创新人才培养,猿辅导投资1亿元设立新基金

近日&#xff0c;在日本千叶县举办的2023年第64届国际数学奥林匹克&#xff08;IMO&#xff09;竞赛公布比赛结果&#xff0c;中国队连续5年获得团体第一。奖牌榜显示&#xff0c;代表中国参赛的6名队员全部获得金牌。其中&#xff0c;猿辅导学员王淳稷、孙启傲分别以42分、39分…

用latex的ACM模板写论文如何去除页眉页脚以及Reference

简单粗暴如下&#xff1a; 1、latex最开始补充&#xff1a; \documentclass[acmsmall]{acmart} \settopmatter{printacmreffalse} % Removes citation information below abstract \renewcommand\footnotetextcopyrightpermission[1]{} % removes footnote with conference in…

FFmepg视频解码

1 前言 上一篇文章<FFmpeg下载安装及Windows开发环境设置>介绍了FFmpeg的下载安装及环境配置&#xff0c;本文介绍最简单的FFmpeg视频解码示例。 2 视频解码过程 本文只讨论视频解码。 FFmpeg视频解码的过程比较简单&#xff0c;实际就4步&#xff1a; 打开媒体流获取…

代码随想录额外题目| 二叉树 ●129求根到叶数字之和 ●1382二叉树变平衡●100相同的树

#129求根到叶数字之和 回溯放进vector&#xff0c;然后从后往前拿&#xff0c;乘1 10 100 ... 很基础的回溯 my code&#xff1a; void backtrack(int depth, TreeNode* cur, vector<TreeNode*> &vec, int &sum){if(cur->leftnullptr &&cur->rig…

如何方便地使用TCL恢复带BD设计的Vivado工程

恢复无BD设计的Vivado工程 当工程中无Block Design设计时&#xff0c;工程恢复过程相对简单。使用write_project_tcl命令可以直接生成用于恢复工程的tcl文件&#xff0c;如*_prj.tcl&#xff0c;在恢复时直接运行就可以了。 修改恢复工程的路径 *_prj.tcl在恢复工程时会将其…

监控对象都有哪些分类

1、业务监控 这类指标是管理层非常关注的&#xff0c;代表企业营收&#xff0c;或者跟客户主流程相关&#xff0c;类似 BI 数据。不过相比 BI 数据&#xff0c;业务监控指标有两点不同。 对精确度要求没有那么高&#xff1a;因为监控只要发现趋势异常就可以&#xff0c;至于是…

极简在线商城系统,支持docker一键部署

Hmart 给大家推荐一个简约自适应电子商城系统&#xff0c;针对虚拟商品在线发货&#xff0c;支持企业微信通知&#xff0c;支持docker一键部署&#xff0c;个人资质也可搭建。 前端 后端 H2 console 运行命令 docker run -d --name mall --restartalways -p 8080:8080 -e co…

LeetCode_贪心算法_中等_763.划分字母区间

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍…

Jackson:String转object反序列化失败

场景 消费mq时String转Object 代码 for (MessageExt msg : msgs) {String msgBody new String(msg.getBody(), StandardCharsets.UTF_8);BinlogEvent binlogEvent JsonUtil.silentString2Object(msgBody, BinlogEvent.class);binlogEvent.setPort(Long.valueOf(port));tCo…

SAP CAP篇十二:AppRouter 深入研究

本文目录 本系列文章理解现有程序app文件夹中的package.json理解approuter.js 修改现有程序修改package.json新建index.js在Approuter中显示额外的逻辑 添加一些额外的Logger对应代码及branch 本系列文章 SAP CAP篇一: 快速创建一个Service&#xff0c;基于Java的实现 SAP CAP…

深入浅出Pytorch函数——torch.sum

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.Tensor 函数torch.sum有两种形式&#xff1a; torch.sum(input, *, dtypeNone)&#xff1a;返回输入张量input所有元素的和。torch.sum(input, dim, keepdimFalse, *,…

2308C++技巧

struct ubiq {template <class Type>constexpr operator Type() const {return Type{};}; }; // int i ubiq{}; double d ubiq{}; char c ubiq{}; //可以多个同时初化. template <class T, std::size_t... I> constexpr auto 类型转标识数组(std::size_t* types…

(AcWing)多重背包问题 I,II

有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件&#xff0c;每件体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使物品体积总和不超过背包容量&#xff0c;且价值总和最大。 输出最大价值。 输入格式 第一行两个整数 N&#xff0c;…

使用树莓派picow和drv8833驱动直流电机

raspberry pico w引脚图 1. 准备工作 板子编辑器raspberry pico wmicropython&#xff08;thonny编辑器&#xff09; 最新的raspberry pi pico w系统包下载地址。 点亮板载led灯 需要注意的是pico的板载led灯是GPIO25引脚&#xff0c;picow的板子led灯则直接用Pin包的&qu…

Spring依赖注入Bean属性

目录 1.依赖注入 1.1构造 1.2set注入 2.基于XML的自动装配 2.1根据名称: 2.2根据类型: 2.3根据构造自动注入 3.Spring 文件中 Bean属性 1.依赖注入 依赖注入&#xff0c;是IOC的一个方面&#xff0c;是个通常的概念&#xff0c;它有多种解释。这概念是说你不用创建对象&…

Unity 使用SharpZipLib解压时报错

报错信息&#xff1a; NotSupportedException: Encoding 936 data could not be found. Make sure you have correct international System.Text.Encoding.GetEncoding (System.Int32 codepage) ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToString。 出现问题分析&…