Spring Boot 学习摘要--关于日志框架
date: 2020-01-05 16:20:00
updated: 2020-01-08 15:50:00
Spring Boot 学习摘要--关于日志框架
学习教程来自:B站 尚硅谷
1. 关于日志框架
市面上有 N 多个日志工具包,为了能通用,会有专门的抽象类,所以需要用的时候,要先选择一个抽象类的包,然后选择对应的一个实现类的包
抽象类:JCL 、 SLF4J
实现类:Log4J 、 JUL 、 Log4J2 、 Logback
Spring Boot 选择是的 SLF4J 和 Logback
抽象类也就是门面,只是在.java文件中调用的类(包),底层实现还是用的 Logback
1. SLF4J 的使用
在开发的时候,应该调用日志抽象层中的方法,会自动适配到实现层的方法
在系统里导入 slf4j 和 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");
}
}

PS:如果 slf4j 要调用 log4j 的实现方法,因为 slf4j 出现的早,没有做 log4j 的适配,所以需要再导入一个 slf4j-log412.jar,来自动匹配到 log4j 的方法
每一个日志框架都有自己的配置文件。如果要是用slf4j的话,配置文件还是需要用日志实现框架自己本身的配置文件。
2. 如果有多个系统,每个系统用的日志框架都不一致,如何统一修改为 slf4j ?
将系统中不同的日志框架包按照下图来替换

3. slf4j 的使用
- 日志的级别 由低到高
可以调整日志的级别,只打印大于等于该级别的日志
logger.trace("...")
logger.debug("...")
logger.info("...")
logger.warn("...")
logger.error("...")
Springboot 默认输出的是 info 级别的日志,即只输出 info、warn、error 这三个级别的日志。可以在 application.properties 文件里修改
logging.level.具体的某一个包或类=trace/debug/info/warn/error
- 指定输出日志文件 在 application.properties 文件中配置
logging.file=
logging.path=
- 如果没有配置这两项,日志只在控制台输出
- 只配置
logging.file:会在当前项目下生成日志文件 - 只配置
logging.path:会在磁盘根路径下创建文件夹,并且使用spring.log作为默认文件
# 在控制台输出的日志的格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logging{50} - %msg%n
# 指定文件中日志的输出的格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} -- [%thread] -- %-5level -- %logging{50} -- %msg%n
- 其他配置 添加新的配置文件
如果是使用 Logback 日志框架,添加 logback.xml 来指定配置,但是更推荐使用 logback-spring.xml 文件来指定配置,这时候日志框架不会直接加载配置文件,而是由 SpringBoot 解析日志配置,这样就可以使用 springProfile 功能,通过指定运行环境(dev/prod)来实现切换输出日志形式。
如何切换运行环境:
# application.properties 文件中添加
spring.profile.active=dev/prod
附:logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, -->
<!-- appender是configuration的子节点,是负责写日志的组件。 -->
<!-- ConsoleAppender:把日志输出到控制台 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
</filter>
<encoder>
<pattern>%d %p (%file:%line\)- %m%n</pattern>
<!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
<!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是sys.log -->
<!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名-->
<appender name="syslogInfo"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<File>/Users/mxxct/Desktop/log/info/info.log</File>
<!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
<!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
<!-- 文件名:log/sys.2017-12-05.0.log -->
<fileNamePattern>/Users/mxxct/Desktop/log/info/%d/credit.%d.%i.log</fileNamePattern>
<!-- 每产生一个日志文件,该日志文件的保存期限为30天 -->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- maxFileSize:用于判断日志切割的文件大小,默认值是10MB -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- pattern节点,用来设置日志的输入格式 -->
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<!-- 记录日志的编码 -->
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<appender name="syslogError" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<File>/Users/mxxct/Desktop/log/error/error.log</File>
<!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
<!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
<!-- 文件名:log/sys.2017-12-05.0.log -->
<fileNamePattern>/Users/mxxct/Desktop/log/error/%d/error.%d.%i.log</fileNamePattern>
<!-- 每产生一个日志文件,该日志文件的保存期限为30天 -->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- maxFileSize:用于判断日志切割的文件大小,默认值是10MB -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- pattern节点,用来设置日志的输入格式 -->
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<!-- 记录日志的编码 -->
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<!-- 控制台输出日志级别 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
<!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
<!-- shop.bangke.credit为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
<!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
<logger name="com.bigdata" level="DEBUG">
<appender-ref ref="syslogInfo"/>
<appender-ref ref="syslogError"/>
</logger>
</configuration>
Spring Boot 学习摘要--关于日志框架的更多相关文章
- Spring Boot 学习摘要--关于配置
date: 2019-12-27 09:00:00 updated: 2019-12-30 13:20:00 Spring Boot 学习摘要--关于配置 学习教程来自:B站 尚硅谷 1. 关于配置 ...
- Spring Boot中使用logback日志框架
说明:Spring Boot在最新的版本中默认使用了logback框架.一般来说使用时只需在classpath下创建logback.xml即可,而官方推荐使用logback-spring.xml替代, ...
- Spring Boot笔记四:日志框架介绍
我是一名程序员,我喜欢写System.out.println来打印一些重要的信息...后来我学了面向对象,我把这些输出语句整合到了一个工具类里面,可以打印,也可以保存日志. 我是一名积极思考的程序员, ...
- 【spring boot 学习笔记】日志相关
1. 如何启用日志? maven依赖中添加:spring-boot-starter-logging <dependency> <groupId>org.springframew ...
- Spring Boot系列一:默认日志logback配置解析
前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式以及输出方式如何配置? 代码中如何使用? 正文 Sp ...
- Spring boot学习1 构建微服务:Spring boot 入门篇
Spring boot学习1 构建微服务:Spring boot 入门篇 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- Spring Boot学习笔记2——基本使用之最佳实践[z]
前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...
- 转载:spring boot学习
Spring Boot学习 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提 ...
- Spring Boot学习路线
Spring Boot 学习路线,本文计划根据作者近几年的工作.学习经验,来分析和制定一个学习使用 Spring Boot技术的步骤路线图. SpringBoot是伴随着Spring4.0诞生的: S ...
随机推荐
- python基础入门语法和变量类型(二)
列表 列表是 Python 中使用最频繁的数据类型,它可以完成大多数集合类的数据结构实现,可以包含不同类型的元素,包括数字.字符串,甚至列表(也就是所谓的嵌套). 和字符串一样,可以通过索引值或者切片 ...
- Oracle学习(九)存过、游标、RECORD整合
一.代码 /*1.定义存过*/ CREATE OR REPLACE PROCEDURE PRO_RE_USER_ORD_GOODS( --NOW_DATE格式:YYYYMMDD 如:20190801( ...
- SpringBoot-03-JSR303数据校验和多环境切换
3.3 JSR303数据校验 先看如何使用 Springboot中可以用@Validated来校验数据,如果数据异常则统一抛出异常,方便异常中心统一处理. 这里我们写个注解让name只支持Em ...
- Python-SyntaxError: invalid syntax
Error: SyntaxError: invalid syntax Where? 运行Python代码时候,提示错误 Way? Python def class if elif for while ...
- Bayer Pattern——RGGB
原博客地址:https://blog.csdn.net/joe9280/article/details/46952947 参考:https://blog.csdn.net/wgx571859177/a ...
- CF471D MUH and Cube Walls
Link 一句话题意: 给两堵墙.问 \(a\) 墙中与 \(b\) 墙顶部形状相同的区间有多少个. 这生草翻译不想多说了. 我们先来转化一下问题.对于一堵墙他的向下延伸的高度,我们是不用管的. 我们 ...
- AMD Ryzen 5000系列桌面处理器 2020年10月8日发布
AMD Ryzen 5 5600X 6核心12线程,基础频率3.7GHz,最大频率4.6GHz,二级缓存3MB,三级缓存32MB,不锁频,支持DDR4 3200MHz内存,台积电7纳米工艺,PCIe ...
- Nginx作为反向代理时传递客户端IP的设置方法
因为nginx的优越性,现在越来越多的用户在生产环境中使用nginx作为前端,不管nginx在前端是做负载均衡还是只做简单的反向代理,都需要把日志转发到后端real server,以方便我们检查程序的 ...
- BigInteger和BigDecimal
BigInteger BigInteger的作用是对整数做计算,一般的使用String类型初始化BigInteger,它除了封装了基本的加减乘除运算外还提供了signum(),abs()等函数,使用方 ...
- json对象去重,根据指定字段
function FilterByName(data, Name) { //data是json对象,Name是根据什么字段去重 var map = {}, dest = []; for (var i ...