当前位置: 首页 > news >正文

spring springboot 日志框架

一、常见的日志框架

JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....

注意:SLF4j  类似于接口   Log4j ,Logback 都是出自同一作者之手

          JUL 为apache 公司产品

Spring(commons-logging)、Hibernate(jboss-logging)

日志门面 (日志的抽象层)日志实现
JCL(Jakarta Commons Logging)Log4j JUL(java.util.logging)
Log4j2 Logback
SLF4j(Simple Logging
Facade for Java)
jboss-logging

SpringBoot:底层是Spring框架,Spring框架默认是用JCL;

SpringBoot  选用 SLF4j 和  logback;

二、SLF4j使用

SLF4J  为一个门面,抽象类,当我们使用时候,调用接口方法打印日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class HelloLoggerWorld {public static void main(String[] args) {Logger logger = LoggerFactory.getLogger(HelloLoggerWorld .class);logger.info("Hello World");}
}

2.1 图解

   每一个日志的实现框架都有自己的配置文件。使用slf4j以后,配置文件还是做成日志实现框架自己本身的配置文件;

2.2 如何让系统中所有的日志都统一到slf4j

1、将系统中其他日志框架先排除出去;
2、用中间包来替换原有的日志框架;
3、我们导入slf4j其他的实现

三、SpringBoot日志关系

<dependency>        <groupId>org.springframework.boot</groupId>            <artifactId>spring‐boot‐starter</artifactId>            
</dependency> <dependency>    <groupId>org.springframework.boot</groupId>            <artifactId>spring‐boot‐starter‐logging</artifactId>            
</dependency> 

3.1 底层依赖关系

总结:
1)、SpringBoot底层也是使用slf4j+logback的方式进行日志记录
2)、SpringBoot也把其他的日志都替换成了slf4j;
3)、中间替换包,就是over xxx

4)、如果我们要引入其他框架?一定要把这个框架的默认日志依赖移除掉?
Spring框架用的是commons-logging;

<dependency>        <groupId>org.springframework</groupId>            <artifactId>spring‐core</artifactId>            <exclusions>            <exclusion>                <groupId>commons‐logging</groupId>                    <artifactId>commons‐logging</artifactId>                    </exclusion>                </exclusions>            
</dependency> 

SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可;

四、日志使用

//记录器    
Logger logger = LoggerFactory.getLogger(getClass());    
@Test    
public void contextLoads() {    
//System.out.println();        
//日志的级别;        
//由低到高   trace<debug<info<warn<error        
//可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效        
logger.trace("这是trace日志...");        
logger.debug("这是debug日志...");        
//SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root
级别logger.info("这是info日志...");        
logger.warn("这是warn日志...");        
logger.error("这是error日志...");        
} 

4.1 SpringBoot修改日志的默认配置

logging.level.com.fashion=trace
#logging.path=
# 不指定路径在当前项目下生成springboot.log日志
# 可以指定完整的路径;
#logging.file=E:/springboot.log
# 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件
logging.path=/spring/log
#  在控制台输出的日志的格式
logging.pattern.console=%d{yyyy‐MM‐dd} [%thread] %‐5level %logger{50} ‐ %msg%n
# 指定文件中日志输出的格式
logging.pattern.file=%d{yyyy‐MM‐dd} === [%thread] === %‐5level === %logger{50} ==== %msg%n

日志输出格式:
%d表示日期时间,        
%thread表示线程名,        
%‐5level:级别从左显示5个字符宽度        
%logger{50} 表示logger名字最长50个字符,否则按照句点分割。         
%msg:日志消息,        
%n是换行符        
    ‐‐>
    %d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n

4.2 指定配置

给类路径下放上每个日志框架自己的配置文件即可;SpringBoot就不使用他默认配置的了。

Logging System Customization
Logbacklogback-spring.xml , logback-spring.groovy , logback.xml or
logback.groovy
Log4j2log4j2-spring.xml or log4j2.xml
JDK (Java Util
Logging)
logging.properties

logback.xml 和 logback-spring.xml 区别

logback.xml:直接就被日志框架识别了;
logback-spring.xml:日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot 的高级Profile功能。列如:

<springProfile name="staging">
    <!‐‐ configuration to be enabled when the "staging" profile is active ‐‐>
   可以指定某段配置只在某个环境下生效  
</springProfile>

4.3 logback.xml 配置

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><!‐‐日志输出格式:%d表示日期时间,            %thread表示线程名,            %‐5level:级别从左显示5个字符宽度            %logger{50} 表示logger名字最长50个字符,否则按照句点分割。             %msg:日志消息,            %n是换行符            ‐‐><layout class="ch.qos.logback.classic.PatternLayout"><springProfile name="dev"><pattern>%d{yyyy‐MM‐dd HH:mm:ss.SSS} ‐‐‐‐> [%thread] ‐‐‐> %‐5level
%logger{50} ‐ %msg%n</pattern></springProfile><springProfile name="!dev"><pattern>%d{yyyy‐MM‐dd HH:mm:ss.SSS} ==== [%thread] ==== %‐5level
%logger{50} ‐ %msg%n</pattern></springProfile></layout></appender>

注意:如果使用logback.xml作为日志配置文件,还要使用profile功能,会有以下错误

no applicable action for [springProfile]

4.4 slf4j+log4j的方式 切换日志

按照图示,我们需要排除默认的 logback 实现,引入 log4j的实现

// 排除 logback实现
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐starter‐web</artifactId><exclusions><exclusion><artifactId>logback‐classic</artifactId><groupId>ch.qos.logback</groupId></exclusion><exclusion><artifactId>log4j‐over‐slf4j</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions>
</dependency>//引入 slf4j实现  login4j
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j‐log4j12</artifactId>
</dependency>

4.5  slf4j + log4j2 方式  输入日志

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

五、mybatis 中如何开启日志

当我们没有配置文件的时候,mybatis 不会打印sql 相关信息,我们只需要开启,两种方案

方法一、yaml 中直接配置 

  

logging:level:com:fashion: debug  #com.fashion 为自己项目所属包

方法二、编写xml 日志文件

<logger name="com.fashion" level="debug" />

相关文章:

spring springboot 日志框架

一、常见的日志框架 JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j.... 注意&#xff1a;SLF4j 类似于接口 Log4j &#xff0c;Logback 都是出自同一作者之手 JUL 为apache 公司产品 Spring&#xff08;commons-logging&#xff09;、Hibernate&#xff08;jboss…...

【D3.js in Action 3 精译_022】3.2 使用 D3 完成数据准备工作

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可视化最佳实践&#xff08;下&#xff09;1.4 本章小结 第二章…...

电脑怎么禁用软件?5个方法速成,小白必入!

电脑禁用软件的方法多种多样&#xff0c;以下是五种简单易行的方法. 适合不同需求的用户&#xff0c;特别是电脑小白。 1. 使用任务管理器禁用启动项 操作步骤&#xff1a;按下“Ctrl Shift Esc”组合键&#xff0c;打开任务管理器。 切换到“启动”选项卡&#xff0c;找到…...

力扣之181.超过经理收入的员工

文章目录 1. 181.超过经理收入的员工1.1 题干1.2 准备数据1.3 题解1.4 结果截图 1. 181.超过经理收入的员工 1.1 题干 表&#xff1a;Employee -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | | salary | int | | mana…...

C++语法应用:从return机制看返回指针,返回引用

前言 编程是极其注重实践的工作,学习的同时要伴随代码 引入 此前对返回指针和引用有一些纠结&#xff0c;从return角度来观察发生了什么。 return机制 函数中return表示代码结束&#xff0c;如果return后面有其他代码将不被执行。 return发生了值转移&#xff0c;return后面的…...

Linux5-echo,>,tail

1.echo命令 echo是输出命令&#xff0c;类似printf 例如&#xff1a;echo "hello world"&#xff0c;输出hello world echo pwd&#xff0c;输出pwd的位置。是键盘上~ 2.重定向符> >> >指把左边内容覆盖到右边 echo hello world>test.txt >…...

sqlgun靶场训练

1.看到php&#xff1f;id &#xff0c;然后刚好有个框&#xff0c;直接测试sql注入 2.发现输入1 union select 1,2,3#的时候在2处有回显 3.查看表名 -1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()# 4.查看列名…...

简化登录流程,助力应用建立用户体系

随着智能手机和移动应用的普及&#xff0c;用户需要在不同的应用中注册和登录账号&#xff0c;传统的账号注册和登录流程需要用户输入用户名和密码&#xff0c;这不仅繁琐而且容易造成用户流失。 华为账号服务(Account Kit)提供简单、快速、安全的登录功能&#xff0c;让用户快…...

【研发日记】嵌入式处理器技能解锁(六)——ARM的Cortex-M4内核

文章目录 前言 背景介绍 指令集架构 ARM起源 ARM分类 Cortex-M4 内核框架 指令流水线 实践应用 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 见《【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(…...

深度学习经典模型之T5

T5(Text-to-Text Transfer Transformer) 是继BERT之后Google的又外力作&#xff0c;它是一个文本到文本迁移的基于Transformer的NLP模型&#xff0c;通过将 所有任务统一视为一个输入文本并输出到文本(Text-to-Text)中&#xff0c;即将任务嵌入在输入文本中&#xff0c;用文本的…...

10.第二阶段x86游戏实战2-反编译自己的程序加深堆栈的理解

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...

ARM总复习

1.计算机的组成 输入设备 输出设备 存储设备 运算器 控制器、总线 2.指令和指令集 2.1 机器指令 机器指令又叫机器码&#xff0c;在运算器内部存在各种运算电路&#xff0c;当处理器从内存中获取一条机器指令&#xff0c;就可以按照指令让运算器内部的指定的运算电路进行运…...

​​使用ENVI之大气校正(下)

再根据遥感影像的拍摄时间将Flight ate与Flight Time GMT (H:M:SS)填写&#xff0c;如要查询按如下方法 这里按照表中的内容修改 根据影像范围的经纬度与拍摄时间更改Atmospheric Model&#xff0c;更改完成后点击Multispectral Settings...在跳出的界面中选择GUI再点击Default…...

C++(学习)2024.9.18

目录 C基础介绍 C特点 面向对象的三大特征 面向对象与面向过程的区别 C拓展的非面向对象的功能 引用 引用的性质 引用的参数 指针和引用的区别 赋值 键盘输入 string字符串类 遍历方式 字符串与数字转换 函数 内联函数 函数重载overload 哑元函数 面向对象基…...

认知小文2《成功之路:习惯、学习与实践》

内容摘要&#xff1a; 在这个充满机遇的时代&#xff0c;成功不再是偶然&#xff0c;而是可以通过培养良好习惯、持续学习和实践来实现的目标。    一、肌肉记忆&#xff1a;技能的基石 成功往往需要像运动员一样&#xff0c;通过日复一日的练习来形成肌肉记忆。无论是健身…...

【数据仓库】数据仓库层次化设计

一、基本概念 **1. RDS&#xff08;RAW DATA STORES&#xff0c;原始数据存储&#xff09;** RDS作为原始数据存储层&#xff0c;用于存储来自各种源头的未经处理的数据。这些数据可能来自企业内部的业务系统、外部数据源或各种传感器等。RDS确保原始数据的完整性和可访问性&…...

【DAY20240918】03教你轻松配置 Git 远程仓库并高效推送代码!

文章目录 前言 git diff一、远程仓库&#xff1f;1、在 Gitee 上新建仓库&#xff1a;2、Git 全局设置&#xff1a;3、添加远程仓库&#xff1a;4、推送本地代码到远程仓库&#xff1a;5、输入用户名和密码&#xff1a;6、后续推送&#xff1a; 二、全情回顾三、参考 前言 git …...

从IPC摄像机读取视频帧解码并转化为YUV数据到转化为Bitmap

前言 本文主要介绍根据IPC的RTSP视频流地址,连接摄像机,并持续读取相机视频流,进一步进行播放实时画面,或者处理视频帧,将每一帧数据转化为安卓相机同格式数据,并保存为bitmap。 示例 val rtspClientListener = object: RtspClient.RtspClientListener {override fun …...

LeetCode 面试经典 150 题回顾

目录 一、数组 / 字符串 1.合并两个有序数组 &#xff08;简单&#xff09; 2.移除元素 &#xff08;简单&#xff09; 3.删除有序数组中的重复项 &#xff08;简单&#xff09; 4.删除有序数组中的重复项 II&#xff08;中等&#xff09; 5.多数元素&#xff08;简单&am…...

【网络安全的神秘世界】渗透测试基础

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 渗透测试基础 基于功能去进行漏洞挖掘 1、编辑器漏洞 1.1 编辑器漏洞介绍 一般企业搭建网站可能采用了通用模板&#xff…...

3步实现Zotero SciPDF插件:科研文献PDF自动下载的终极解决方案

3步实现Zotero SciPDF插件&#xff1a;科研文献PDF自动下载的终极解决方案 【免费下载链接】zotero-scipdf Download PDF from Sci-Hub automatically For Zotero7 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scipdf 还在为学术文献PDF获取困难而烦恼吗&#…...

别再试图让 Agent 适应你的代码库,而是让代码库和流程适应 Agent。AI Coding Agent 时代,工程师不再是“码农”?Harness Engineering 实战 playbook

AI Coding Agent 时代&#xff0c;工程师不再是“码农”&#xff1f;Harness Engineering 实战 playbook 最近刷到 OpenAI 内部大动作&#xff1a;Greg Brockman 发帖说&#xff0c;他们工程师的工作从去年 12 月开始彻底变了。以前用 Codex 写单元测试&#xff0c;现在 Agent…...

Ubuntu系统通过命令行与GUI配置以太网固定IPv4地址全指南

1. 为什么需要固定IP地址&#xff1f; 在日常使用Ubuntu系统时&#xff0c;大多数情况下我们都会选择自动获取IP地址&#xff08;DHCP&#xff09;。这种方式简单方便&#xff0c;特别适合家庭网络环境。但如果你正在搭建服务器、进行网络调试&#xff0c;或者需要远程访问这台…...

终极Ryzen处理器调校指南:免费SMU调试工具快速解锁AMD性能潜力

终极Ryzen处理器调校指南&#xff1a;免费SMU调试工具快速解锁AMD性能潜力 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…...

Todo 时代结束了:当 AI 开始自己管项目,人类管理者该管什么?

AI 不再只是执行你的指令&#xff0c;它开始管理自己的项目了。这是 Anthropic Claude Code 团队成员 Thariq Shihipar 在 2026 年悄悄发出的一条技术更新公告里&#xff0c;藏着的一个巨大信号。大多数人划过去了&#xff0c;没有停下来。Claude Code 宣布&#xff1a;将 Todo…...

【ROS2小白入门】从 ROS 1 到 ROS 2 的跨越:实战重构机器人底盘 Manager 节点

文章目录一、 构建系统的蜕变&#xff1a;CMakeLists.txt 的优雅转身1. 告别 target_link_libraries&#x1f6a8; 避坑指南 1&#xff1a;找不到 serial 串口库&#xff1f;二、 C 源码大换血&#xff1a;彻底消灭 NodeHandle三、 通信机制迁移&#xff1a;发布、订阅与异步服…...

T/SCSIA0018-2025《四川省信息技术应用创新项目费用测算标准》标准解读

此前四川省存量信息系统信创适配改造项目长期面临费用测算无统一标准、议价争议多、成本虚高、重复计费等行业痛点&#xff0c;给项目估算、审计、结算带来诸多困扰。2025年12月29日发布的T/SCSIA0018-2025《四川省信息技术应用创新项目费用测算标准》&#xff0c;作为省内首个…...

[特殊字符] Kimi 智能助手完全使用指南:从入门到精通

Kimi 是由月之暗面&#xff08;Moonshot AI&#xff09;开发的国产 AI 智能助手&#xff0c;自发布以来凭借超长上下文窗口、强大的 Agent 能力和多模态交互&#xff0c;成为国内 AI 工具的重要选择。本指南将系统介绍 Kimi 的核心功能、使用技巧及进阶玩法&#xff0c;帮助你充…...

VIBE革命性视频人体姿态估计:CVPR2020获奖论文完整实现解析

VIBE革命性视频人体姿态估计&#xff1a;CVPR2020获奖论文完整实现解析 【免费下载链接】VIBE Official implementation of CVPR2020 paper "VIBE: Video Inference for Human Body Pose and Shape Estimation" 项目地址: https://gitcode.com/gh_mirrors/vi/VIBE …...

FastAPI异步测试终极指南:如何快速模拟HTTP请求进行高效测试

FastAPI异步测试终极指南&#xff1a;如何快速模拟HTTP请求进行高效测试 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI异步测…...