SpringBoot+logback实现日志记录写入文件

前言
在实际的开发过程中,日志记录有着极其重要的作用,它帮助我们实现更高效的故障排查与调试、更及时的监控和性能优化、更全面的业务分析与决策支持…那么我们如何在SpringBoot项目中实现日志的个性化定制,以满足其他特殊需求呢?

工具logback+lombok

SpringBoot自身已经集成logback所以我们不需要再引入logback的依赖,如果是SpringBoot项目我们只需要引入lombok依赖

 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

编写logback-spring.xml配置文件
(springboot提倡我们使用-spring的日志配置文件)

<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="LOG_HOME" value="F:/logs"/><!--打印到控制台--><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d %-5level [%-18.18thread] - [%X{requestId:-SYSTEM}]:+++++++++ %msg%n</pattern></encoder></appender><appender name="download" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/%d{yyyyMMdd}.%i.log</fileNamePattern><maxHistory>7</maxHistory><maxFileSize>100MB</maxFileSize><totalSizeCap>2GB</totalSizeCap></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level - %msg%n</pattern></encoder></appender><!--    如果appender里没有限定日志如何区分,那么root可以统一设置,如果不配置那么控制台和文件不会输出任何日志,这里root的level不做限制--><root level="INFO"><appender-ref ref="stdout"/></root><!--下载日志--><logger name="download" level="DEBUG" additivity="false"><!--        输出到文件--><appender-ref ref="download"/><!--        允许控制台输出--><appender-ref ref="stdout"/></logger></configuration>

配置文件中appender是用于定义日志输出的目标。它负责将应用程序中产生的日志事件(log event)发送到指定的目的地,如控制台、文件、数据库以及内容格式、日志名称等。
property 元素:定义了一个名为 LOG_HOME 的属性,用于指定日志文件的存储路径。
appender 元素:
stdout appender:将日志输出到控制台。
download appender:将日志输出到文件,并使用滚动策略控制日志文件的大小和数量。
rollingPolicy 元素:定义了 download appender 的滚动策略,根据时间和文件大小来滚动日志文件。
encoder 元素:定义了日志格式,用于指定日志输出的格式,例如时间、日志级别、线程名、消息内容等。
root 元素:定义了根日志记录器,设置了日志级别为 INFO,并指定了输出到 stdout appender。
logger 元素:定义了名为 download 的特定日志记录器,设置了日志级别为 DEBUG,并指定了输出到 download appender 和 stdout appender。
fileNamePattern元素指定了日志文件的文件名

做完以上操作后,我们就能在项目中将日志记录输出到两个appender中。

Logger download =  LoggerFactory.getLogger("download");

在需要打印日志的类或者函数中new 一个logger对象,并且绑定配置文件中download这个logger。

 download.info("请求数据收到");download.info("请求数据成功:"+ftpFiles.length+"条数据");download.info("开始接收:" + k + ftpFile.getName());	download.info("接收完成:" + k + ftpFile.getName());download.info("tar文件接收异常:" + ftpFile.getName()+"操作已超时");download.info("接收完成");download.info("complete response");

输出日志时使用以上代码。
运行项目
在这里插入图片描述
配置文件中指定的日志路径出现日志文件
打开查看
在这里插入图片描述

以上

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

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

相关文章

csv 可视化 python代码

excel查看csv后,csv就被锁定了,不能修改。 用pyqt写一个csv查看工具,拖拽查看,非常方便 目录 第2版,提升加载速度 第1版,加载速度慢 第2版,提升加载速度 import sys import pandas as pd from PyQt5.QtGui import QStandardItemModel, QStandardItem from PyQt5.Qt…

987: 输出用先序遍历创建的二叉树是否为完全二叉树的判定结果

解法&#xff1a; 一棵二叉树是完全二叉树的条件是&#xff1a; 对于任意一个结点&#xff0c;如果它有右子树而没有左子树&#xff0c;则这棵树不是完全二叉树。 如果一个结点有左子树但是没有右子树&#xff0c;则这个结点之后的所有结点都必须是叶子结点。 如果满足以上条…

机器学习(三) ----------线性回归算法(梯度下降+正则化)

目录 1 定义 2 损失函数&#xff08;回归&#xff09; 2.1 最小二乘函数&#xff08;Least Squares Function&#xff09; 2.2 均方误差&#xff08;Mean Squared Error, MSE&#xff09; 2.3 均方根误差&#xff08;Root Mean Squared Error, RMSE&#xff09; 2.4 平均绝…

DDoS攻击的方式

原文网址&#xff1a;DDoS攻击的方式_IT利刃出鞘的博客-CSDN博客 简介 本文介绍DDos攻击的方式。 DDoS的含义&#xff1a;通过占用网络服务的资源让服务器应接不暇&#xff0c;从而拒绝正常的业务流量的一种网络攻击方式。通俗来讲&#xff1a;DDoS就是占用带宽等资源&#…

PC端网页特效异读

pc网页特效 一、三大系列1.元素偏移量&#xff08;offset系列&#xff09;&#xff08;1&#xff09;一些属性&#xff08;2).offset和style的区别(3).一些例子 2.元素可视区(client系列&#xff09;(1).一些属性(2).flexible.js源码分析 3.scroll系列(4).三大系列小结 其他&am…

libcity笔记:参数设置与参数优先级

1 参数优先级 高优先级的参数会覆盖低优先级的同名参数 Libcity中的优先级顺序维&#xff1a; 命令行参数&#xff08;命令行python run_model.py时导入的&#xff09; > 用户定义配置文件&#xff08;命令行python run_model.py时由config_file导入的&#xff09; >…

QT--4

QT 使用定时器完成闹钟 #include "widget.h" #include "ui_widget.h"void Widget::timestart() {timer.start(1000); }void Widget::timeend() {timer.stop(); }Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(t…

leetcode942.增减字符串匹配

题目描述&#xff1a; 由范围 [0,n] 内所有整数组成的 n 1 个整数的排列序列可以表示为长度为 n 的字符串 s &#xff0c;其中: 如果 perm[i] < perm[i 1] &#xff0c;那么 s[i] I 如果 perm[i] > perm[i 1] &#xff0c;那么 s[i] D 给定一个字符串 s &#x…

jsp 实验16 MVC 表白墙

源代码以及执行结果截图&#xff1a; ExpressWish_Bean.java package web; import java.util.HashMap; import java.util.ArrayList; import java.util.Iterator; public class ExpressWish_Bean { public HashMap<String,ExpressWish> wishList; ArrayList&…

神经网络结构的读取与可视化

torchsummary 要使用 Jupyter Notebook 绘制一个神经网络的结构图&#xff0c;可以使用 torchsummary 库中的 summary 函数。该函数可以显示模型的结构以及每一层的输出形状等信息。首先&#xff0c;确保你已经安装了 torchsummary&#xff1a; pip install torchsummary 然…

【ARM 嵌入式 C 字符串系列 23.6 -- 字符串转数值的函数实现】

请阅读【嵌入式开发学习必备专栏 】 文章目录 字符串转数值的函数实现代码实现 字符串转数值的函数实现 背景&#xff1a; 实现个函数首先判断是16进制数值字符串还是10进制数值字符串&#xff0c;如果是16进制数值字符串就将十六进制字符串转换为数值&#xff0c;例如将字符串…

图片公式识别@文档公式识别@表格识别@在线和离线OCR工具

文章目录 abstract普通文字识别本地软件识别公式扩展插件下载小结 在线识别网站/API&#x1f47a;Quicker整合(推荐)可视化编辑和识别公式其他多模态大模型识别图片中的公式排版 开源模型 abstract 本文介绍免费图片文本识别(OCR)工具,包括普通文字识别,公式识别,甚至是手写公…

C++ 类方法解析:内外定义、参数、访问控制与静态方法详解

C 类方法 类方法&#xff0c;也称为成员函数&#xff0c;是属于类的函数。它们用于操作或查询类数据&#xff0c;并封装在类定义中。类方法可以分为两种类型&#xff1a; 类内定义方法: 直接在类定义内部声明和定义方法。类外定义方法: 在类定义内部声明方法&#xff0c;并在…

2024面试自动化测试面试题【含答案】

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

每日Attention学习5——Multi-Scale Channel Attention Module

模块出处 [link] [code] [WACV 21] Attentional Feature Fusion 模块名称 Multi-Scale Channel Attention Module (MS-CAM) 模块作用 通道注意力 模块结构 模块代码 import torch import torch.nn as nnclass MS_CAM(nn.Module):def __init__(self, channels64, r4):super(…

Redis 的数据库管理

Redis 提供了⼏个⾯向 Redis 数据库的操作&#xff0c;分别是 dbsize、select、flushdb、flushall 命令&#xff0c; 我将介绍这些常见的命令。 切换数据库 select dbIndex许多关系型数据库&#xff0c;例如 MySQL ⽀持在⼀个实例下有多个数据库存在的&#xff0c;MySQL 可以…

SQL优化详解

目录 插入数据 insert的优化&#xff08;少量数据&#xff09; 批量插入 手动事务提交 主键顺序插入 插入大量数据 主键优化 数据组织方式&#xff1a; 页分裂&#xff1a; 主键顺序插入的方式&#xff1a; 主键乱序插入&#xff1a; 页合并&#xff1a; 主键设计…

docker常用操作

构建和打包 docker build 根据docker file 创建镜像 docker build -f -t docker save 将镜像打包 docker save -o <xxx.tar> 将打包的镜像加载成镜像&#xff0c;镜像名字不可改变&#xff01; docker load -i <xxx.tar> docker export 将容器打包 docker …

模板引擎Freemarker

什么是模板引擎 根据前边的数据模型分析&#xff0c;课程预览就是把课程的相关信息进行整合&#xff0c;在课程预览界面进行展示&#xff0c;课程预览界面与课程发布的课程详情界面一致。 项目采用模板引擎技术实现课程预览界面。什么是模板引擎&#xff1f; 早期我们采用的…

【有趣的透镜】1.透镜初相识

1.透镜的外形和材料 (1)透镜由玻璃或者塑料制成&#xff1b; (2)透镜一般为圆型&#xff0c;其单面或双面为球面&#xff1b; 2.透镜的类型和折射 (1)球面外凸为凸透镜(聚光)&#xff0c;球面内凹为凹透镜(散光)&#xff1b; (2)透镜是基于光的折射&#xff0c;只要光从一…