spring boot 日志乱码_3. Spring Boot日志
3.1 日志框架分类和选择
市面上的日志框架
JCL、SLF4J,Jboss-logging、logback、log4j、log4j2、JUL ....
左边选一个门面(抽象层),右边来选一个实现 ?
注意:1. Spring框架默认使用JCL,SpringBoot选用了SLF4j 和logback2. 为什么要选择 SLF4j 和logback? ① jboss-logging 适用场景太少 ② JCL 最后一次更新为2014年 ③ log4j,Logback,SLF4J是同一个人写的,log4j写出来有性能问题于是他写 了Logback日志实现 和 SLF4J抽象层 ④ JUL为java.util自带的日志实现,不太强 ⑤ log4j2借了log4j之名,是Apache重新写的一个框架,由于设计的太好还没有 适配许多框架
3.2 SLF4J原理
如何在系统中使用SLF4j,参考官方文档:https://www.slf4j.org
以后开发的时候,日志记录方法的调用不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法
使用
出现较早的日志框架需要做中间适配层
例如给系统里面导入SLF4J 的jar包 和 logback 的jar包
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } }
注意:1. 每一个日志的实现框架都有自己的配置文件2. 使用SLF4J以后,配置文件还是做成日志实现框架自己本身的配置文件
3.3 其它日志框架统一转换为SLF4J
问题
假设开发A系统,用的日志框架是(slf4j+logback),但是开发A系统要依赖Spring,Hibernate,MyBatis等框架且每一个框架在底层也用到了日志框架。如Spring使用了commons-logging,Hibernate使用了jboss-logging
统一日志记录 即使是别的框架也要和我一起统一使用SLF4J进行日志输出?
将系统中其他日志框架先排除出去
用中间包来替换原有的日志框架
我们再来导入SLF4J其他的实现如Logback
3.4 SpringBoot日志关系
所有的场景启动器都依赖spring‐boot‐starter
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring‐boot‐starterartifactId> dependency>
spring‐boot‐starter中的依赖 spring‐boot‐starter‐logging
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring‐boot‐starter-loggingartifactId> dependency>
pom.xml右键Diagrams可视化SpringBoot底层依赖关系
总结
SpringBoot底层也是使用slf4j+logback的方式进行日志记录
SpringBoot也把其他的日志都替换成了slf4j;
中间替换包 ?
如果我们要引入其他框架,一定要把这个框架的默认日志依赖移除掉!!例如SpringBoot排除了Spring底层的commos-logging包
3.5 日志使用 - 默认配置
SpringBoot默认帮我们配置好了日志,可以直接使用
配置文件中修改日志的默认配置
3.6 日志使用 - 指定配置
给类路径下放上每个日志框架自己的配置文件即可,SpringBoot就不使用他默认配置的了
logback.xml 与 logback-spring.xml 区别
logback.xml :直接就被日志框架识别了
logback-spring.xml :日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot 的高级Profile功能
<springProfile name="staging"> 可以指定某段配置只在某个环境下生效 springProfile>
Profile功能举例:
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?><configuration> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%d{yyyy/MM/dd-HH:mm:ss}] [%thread] [%-5level] [%logger] : %msg%npattern> <charset>UTF-8charset> encoder> appender> <appender name="fileStore" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFOlevel> filter> <File>logs/polaris_blog_system.logFile> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/sob_system_blog.%d.%i.logfileNamePattern> <maxHistory>30maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MBmaxFileSize> timeBasedFileNamingAndTriggeringPolicy> rollingPolicy> <encoder> <pattern>[%d{yyyy/MM/dd-HH:mm:ss}] [%thread] [%-5level] [%logger] : %msg%npattern> <charset>UTF-8charset> encoder> appender> <logger name="com.polaris.blog" level="DEBUG" additivity="false"> <appender-ref ref="Console"/> <appender-ref ref="fileStore"/> logger> <root level="INFO"> <appender-ref ref="Console"/> root>configuration>
3.7 lombok依赖
安装lombok插件,使用时添加@Slf4j注解,通过log调用即可。就不用在使用log的时候每次都创建了
当然,lombok还有很多其他强大的功能。
使用
添加依赖
<dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> <version>1.18.12version> <scope>providedscope>dependency>
添加IDE工具对Lombok的支持
//IDEA中引入Lombok支持如下:// ① 点击File-- Settings设置界面,安装Lombok插件:// ② 点击File-- Settings设置界面,开启 AnnocationProcessors:// 开启该项是为了让Lombok注解在编译阶段起到作用。
3.8 切换日志框架
可以按照slf4j的日志适配图,进行相关的切换
从slf4j+logback切换到slf4j+log4j的方式(不推荐,log4j有性能问题)
从slf4j+logback切换到slf4j+log4j2
可以直接把spring-boot-starter-logging替换为spring-boot-starter-log4j2
spring boot 日志乱码_3. Spring Boot日志相关推荐
- spring boot logback_SpringBoot集成logback后访问日志端点
问题描述 使用SpringBootAdmin(sba)监控Springboot服务时,配置了logback日志框架,按天滚动生成日志,此时在sba的日志监控页面出现404,如下图所示: 解决方案 查看 ...
- Spring Boot + MDC 实现全链路调用日志跟踪
写在前面 通过本文将了解到什么是MDC.MDC应用中存在的问题.如何解决存在的问题 MDC介绍 简介: MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j .l ...
- springboot日志写入mysql_44. Spring Boot日志记录SLF4J【从零开始学Spring Boot】
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看! SpringSecurity5.0视频:http://t.cn/A6ZadMBe Sharding-JDBC分库分表实战: 在开发 ...
- 学习Spring Boot:(四)应用日志
前言 应用日志是一个系统非常重要的一部分,后来不管是开发还是线上,日志都起到至关重要的作用.这次使用的是 Logback 日志框架. 正文 Spring Boot在所有内部日志中使用Commons L ...
- Spring Boot:(六)默认日志logback配置解析
Spring Boot:(六)默认日志logback配置解析 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日 ...
- logback日志pattern_003、Spring Boot使用slf4j进行日志记录
在开发中,我们经常使用 System.out.println() 来打印一些信息,但是这样不好,因为大量的使用 System.out 会增加资源的消耗.我们实际项目中使用的是 slf4j 的 logb ...
- Spring Boot Admin在线查看spring boot后台日志
当前,应用系统微服务架构.前后端分离(前端vue,后端springboot),已经成为大部分项目的标准技术架构,但在项目上线后,spring boot后端服务部署在服务器上,大部分公司对服务器都有安全 ...
- Spring Boot整合ELK 处理为服务日志,妙!
你知道的越多,不知道的就越多,业余的像一棵小草! 成功路上并不拥挤,因为坚持的人不多. 编辑:业余草 developer.ibm.com 推荐:https://www.xttblog.com/?p=5 ...
- spring boot html乱码,Spring-boot 字符集设置 解决乱码方案
使用spring-boot开发时候,有时候程序没事,往往不经意会造成中文到前端变成乱码(????这样情况) 下面给出spring-boot项目统一字符集设置方案: 1.Spring Boot修改编码方 ...
最新文章
- c# yield关键字原理
- linux系统之编译安装mysql
- python从零开始进阶_从零开始学Python - 第020课:函数使用进阶
- 1356. Sort Integers by The Number of 1 Bits 根据数字二进制下 1 的数目排序
- 论计算机与智能科学类,计算机与智能科学大类培养方案
- web开发软件,8个优秀的CSS实践,附面试题
- 东芝移动硬盘驱动_传输数据不用等,高速移动硬盘数据线畅享快传体验
- 招聘APP如何搭建信用体系以避免求职者被骗
- 微信小程序 Unexpected end of JSON input
- 创建虚拟文件系统设备文件节点_使用proc_create实例分析
- 数据库练习集1--读书笔记
- 【LOJ】#3088. 「GXOI / GZOI2019」旧词
- 小米android11账号补丁,小米10 MIUI11 解账户锁 可登小米账号 永不反锁 完美ROOT 解锁包...
- 【老生谈算法】matlabBOOST电路的设计与仿真——BOOST电路
- 【C初阶】C初阶考试题
- 计算机作业我家乡的变化英语作文,我家乡的变化英语作文(精选12篇)
- 方差、标准差和协方差三者之间的定义与计算
- 深入浅出计算机组成原理20-面向流水线的指令设计(上):一心多用的现代CPU
- ceph节点journal盘更换
- Linux 进程管理之进程的终结