logback日志持久化
1、问题描述
使用logback持久化记录日志。
2、我的代码
logback是Springboot框架里自带的,所以只要引入“spring-boot-starter”就行了。无需额外引入logback依赖。
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>TestLogBack</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><springframework.version>2.2.1.RELEASE</springframework.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${springframework.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${springframework.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${springframework.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>${springframework.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version><scope>compile</scope></dependency></dependencies>
</project>
logback-spring.xml
(带“-spirng”的配置文件则无需在application.yml里面在配置logging:config)
<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/defaults.xml" /><include resource="org/springframework/boot/logging/logback/console-appender.xml" /><!-- 开启后可以通过jmx动态控制日志级别(springboot Admin的功能) --><!--<jmxConfigurator/>--><springProperty scope="context" name="log.path" source="logging.path" defaultValue="./logs"/><appender name="common-all" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- <File>${log.path}/api/common-all.log</File>--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${log.path}/api/common-all/common-all.%d{yyyy-MM-dd}.log.gz</FileNamePattern><maxHistory>30</maxHistory><!-- 保留30天日志 --></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] [%X{klone.requestFlowNo}|%X{klone.consumerIp}] %logger{56}.%method\(\): - %msg%n</pattern></layout></appender><appender name="common-error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- <File>${log.path}/api/common-error.log</File>--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${log.path}/api/common-error/common-error.%d{yyyy-MM-dd}.log.gz</FileNamePattern><maxHistory>30</maxHistory><!-- 保留30天日志 --></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] [%X{klone.requestFlowNo}|%X{klone.consumerIp}] %logger{56}.%method\(\): - %msg%n</pattern></layout><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="common-all"/><appender-ref ref="common-error"/></root>
</configuration>
TestLogbackController.java
package com.mytest.controller;import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author: Wulc* @time: 2024/5/10 21:54* @description:*/
@RestController
@RequestMapping("/test")
@Slf4j
public class TestLogbackController {//private Logger logger = LoggerFactory.getLogger(getClass());@GetMapping("/printLog")public String printLog(int i) {//logger.info("打印一条日志");log.info("打印一条日志");int k = 10 / i;return "打印了日志";}
}
3、效果

4、总结
写这篇文章,主要是记录一下logback-spring.xml的配置内容。
5、参考资料
https://chatgpt.com/?oai-dm=1
相关文章:
logback日志持久化
1、问题描述 使用logback持久化记录日志。 2、我的代码 logback是Springboot框架里自带的,所以只要引入“spring-boot-starter”就行了。无需额外引入logback依赖。 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns&…...
函数原型(Function Prototype)、函数定义(Function Definition)和函数声明(Function Declaration)
函数原型(Function Prototype)、函数定义(Function Definition)和函数声明(Function Declaration)在C和C等编程语言中扮演着不同的角色,但它们有时在概念上可能会有些重叠。下面是它们之间的主要…...
Go有无缓冲channel的区别
无缓冲的channel channel的默认类型就是无缓冲的。当一个数据被发送到无缓冲的channel中,发送操作会被阻塞,知道有另一个goroutine从这个channel中接收这个数据。同样,当试图从一个无缓冲的channel中接收数据时,如果没有数据可以…...
【全开源】Fastflow工作流系统(源码搭建/上线/运营/售后/维护更新)
一款基于FastAdminThinkPHP开发的可视化工作流程审批插件,帮助用户基于企业业务模式和管理模式自行定义所需的各种流程应用,快速构建企业自身的流程管控体系,快速融合至企业协同OA办公系统。 提供全部无加密服务端源码和前端源代码࿰…...
超越传统游戏:生成式人工智能对游戏的变革性影响
人工智能(AI)在游戏中的应用 游戏产业是一个充满活力、不断发展的领域,人工智能(AI)的融入对其产生了重大影响。这一技术进步彻底改变了游戏的开发、玩法和体验方式。本文分析的重点是传统人工智能和生成式人工智能在游…...
SpringCloud微服务之Eureka、Ribbon、Nacos详解
SpringCloud微服务之Eureka、Ribbon、Nacos详解 1、认识微服务1.1、单体架构1.2、分布式架构1.3、微服务1.4、SpringCloud 2、服务拆分与远程调用2.1、服务拆分的原则2.2、服务拆分示例2.2、提供者与消费者 3、Eureka注册中心3.1、Eureka的结构和作用3.2、搭建eureka-server3.2…...
五角钱的程序员 | Kafka 是什么?
本文来源公众号“五角钱的程序员”,仅用于学术分享,侵权删,干货满满。 原文链接:Kafka 是什么? 你是一个程序员,假设你维护了两个服务 A 和 B。B 服务每秒只能处理 100 个消息,但 A 服务却每秒…...
C++中合成的默认构造函数的访问权限
问题 我们知道,在C中,如果没有为一个类显式定义构造函数,那么编译器会为我们隐式地定义一个默认构造函数。那么,你有没有想过,这个隐式定义的默认构造函数(合成的默认构造函数)的访问权限是什么…...
【前端】桌面版docker并部署前端项目
环境 win10专业版 2004 , 需科学 官网下载安装包并安装4.29.0版本 终端输入 wsl --installdocker桌面版和模拟器只能选一个,不然一直转圈圈 镜像配置加速,在settings—>docker engine下 {"builder": {"gc": {"defaultKee…...
发布GPT-5的方式可能会与以往不同;开源vocode使用 AI 自动拨打电话;开源gpt智能对话客服工具;AI自动写提示词
✨ 1: vocode 用AI通过声音与用户进行实时交流 Vocode是一个旨在帮助开发者快速构建基于声音的大型语言模型(LLM)应用程序的开源库。简单来说,如果你想要开发一个能够通过声音与用户进行实时交流的应用,比如电话机器人、语音助手…...
Linux 作业管理 (bg, fg, jobs, kill)
bg 和 fg 是用来管理作业(在 Unix/Linux 命令行下运行的进程)的命令。 1. bg 命令 bg 命令用于将作业(job)放到后台运行。当你在终端中运行一个命令或程序时,它会占用当前终端的控制,如果你想让这个任务在…...
springboot Redis 支持星号(*) 包括注解@Cache
通过自定义CacheManager Bean来实现 bean Autowiredprivate RedisConnectionFactory redisConnectionFactory;/*** 管理缓存** return*///缓存管理器PrimaryBeanOverridepublic CacheManager cacheManager() {// 使用自定义的缓存配置初始化一个cacheManagerreturn new Custom…...
2023.5.12 第43周周报
学习时间:2023.5.5-2023.5.12 学习内容: 1、answer question: img: 看到有论文说应该让图像和文本的潜在嵌入具有相似和合理的数值范围【-2,2】 调试发现模型的文本图像的潜在嵌入虽然符合,但相差较大。 在将文本和…...
JavaEE 多线程详细讲解(2)
1.线程不安全分析 (1)线程不安全的主要原因就是,系统的抢占式执行,对于内核设计者来说,这是非常方便的一个执行方式,但是这却却导致线程不安全的问题,也有不抢占执行的系统,但是这种…...
Flask-HTTP请求、响应、上下文、进阶实验
本节主要目录如下: 一、请求响应循环 二、HTTP请求 2.1、请求报文 2.2、Request对象 2.3、在Flask中处理请求 2.4、请求钩子 三、HTTP响应 3.1、响应报文 3.2、在Flask中生成响应 3.3、响应格式 3.4、Cookie 3.5、session:安全的Cookie 四、…...
springboot 设置response和request的默认格式 驼峰或者SNAKE_CASE
springboot 设置response和request的默认格式 驼峰或者SNAKE_CASE。 我们使用默认配置的情况下,response和request是由jackson jason序列化和解析的,因此,我们只需要配置好jackson json的默认格式就可以。 要设置 jackson json默认的更多格式…...
VR全景技术在养老院的应用优势浅析
随着时代的快速发展,人口老龄化越来越严重,如何利用VR技术提升养老服务的质量,成为了社会各界关注的焦点。为养老院拍摄制作VR全景,不仅能够为养老院的老人子女们跨越空间限制,实现与家人的情感连接,还可以…...
[Spring Cloud] (6)gateway整体加解密
文章目录 简述整体效果后端增加配置nacos增加配置GlobalConfig 添加请求整体解密拦截器DecryptionFilter添加响应整体解密拦截器EncryptionFilter 前端请求拦截器添加整体加密逻辑请求头中添加sessionId 响应拦截器添加整体解密逻辑 简述 本文网关gateway,微服务&a…...
RUST编程语言入门基础2024
庄晓立,2024年3月。 Rust简介 A language empowering everyone to build reliable and efficient software. Rust编程语言赋能所有人开发高可靠且高性能的软件。 性能 Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can…...
Linux进程控制——Linux进程终止
前言:前面了解完前面的Linux进程基础概念后,我们算是解决了Linux进程中的一大麻烦,现在我们准备更深入的了解Linux进程——Linux进程控制! 我们主要介绍的Linux进程控制内容包括:进程终止,进程等待与替换&a…...
Claude Code自动模式上线:AI开始自己改代码了
导读最近 Claude Code 推出了一个关键更新:自动决策模式(Auto Mode)正式上线。这次不是模型升级,而是权限变化:AI可以自行决定是否修改代码可以直接写入文件不再需要开发者逐步确认每一步操作目前已经在企业版和API用户…...
终极指南:CleanArchitecture项目Angular 17快速升级实战与最佳实践
终极指南:CleanArchitecture项目Angular 17快速升级实战与最佳实践 【免费下载链接】CleanArchitecture Clean Architecture Solution Template for ASP.NET Core 项目地址: https://gitcode.com/GitHub_Trending/cle/CleanArchitecture 如果你正在使用Clean…...
Linux文件搜索工具FSearch:从卡顿到闪电的搜索体验革新
Linux文件搜索工具FSearch:从卡顿到闪电的搜索体验革新 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 在Linux系统中,文件搜索往往是一场与时…...
ConvNeXt 改进 :ConvNeXt添加可变形卷积(DCNv2,CVPR 2018),实现高效涨点,二次创新CNBlock结构 ,独家首发
本文教的是方法,也给出几种改进方法,二次创新结构,百变不离其宗,一文带你改进自己模型,科研路上少走弯路。 前言 DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的Co…...
MXene基单原子催化剂在电催化CO2还原中的电子结构调控与性能优化
1. MXene基单原子催化剂为何能成为CO2还原的"黑马"? 在碳中和背景下,电催化CO2还原技术就像一位"化学魔术师",能把温室气体变废为宝。而MXene材料凭借其独特的层状结构和导电性,正成为这场魔术表演的明星道具…...
系统托盘管理效率革命:让你的Windows桌面空间重获自由
系统托盘管理效率革命:让你的Windows桌面空间重获自由 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 当你的任务栏堆叠着12个窗口图标,每点击一次…...
基于Simulink的自抗扰控制(ADRC)在OBC前级的应用
手把手教你学Simulink——基于Simulink的自抗扰控制(ADRC)在OBC前级的应用 (附:OBC前级拓扑剖析+ADRC抗扰原理+TD/ESO/NLSEF算法推导+Simulink全模型搭建+动态响应/谐波抑制对比+实机部署指南) 摘要 车载充电机(OBC)前级作为交流-直流(AC-DC)整流核心,需将电网…...
突破媒体捕获限制:猫抓cat-catch浏览器扩展全方位实战指南
突破媒体捕获限制:猫抓cat-catch浏览器扩展全方位实战指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓cat-catch是一款专注于网…...
AI辅助开发:借助快马平台AI模型打造智能openclaw卸载分析工具
最近在整理开发环境时,遇到了一个棘手的问题:如何彻底卸载openclaw这个工具链。作为一个深度集成的开发套件,它会在系统各处留下各种依赖和配置文件。传统的手动卸载方式不仅效率低下,还容易遗漏关键项。于是我开始尝试用AI来优化…...
KityMinder:可视化思维的协作引擎 | 高效工作者必备工具
KityMinder:可视化思维的协作引擎 | 高效工作者必备工具 【免费下载链接】kityminder 百度脑图 项目地址: https://gitcode.com/gh_mirrors/ki/kityminder 在信息爆炸的时代,如何将零散的想法系统化、复杂的项目结构化?作为一款开源免…...
