SpringBoot项目的logback日志配置(包括打印mybatis的sql语句)
作者:深寒丶 发布时间:2021-08-24 02:15:22
关于logback日志的详解见这位仁兄的博客:Spring Boot-日志配置(超详细)
我在这就开门见山直接介绍我们项目日志的配置使用吧!~
1、基本介绍
默认情况下,Spring Boot项目就会用Logback来记录日志,并用INFO级别输出到控制台。如下图:
实际开发中我们不需要直接添加logback日志依赖。
你会发现 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。
日志级别从低到高分为:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
只能展示大于或等于设置的日志级别的日志;也就是说springboot默认级别为INFO,那么在控制台展示的日志级别只有INFO 、WARN、ERROR、FATAL
2、logback.xml日志文件配置
根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:
Logback:
logback-spring.xml,
logback-spring.groovy
,logback.xml
,logback.groovy
Log4j:
log4j-spring.properties
,log4j-spring.xml
,log4j.properties
,log4j.xml
Log4j2:
log4j2-spring.xml
,log4j2.xml
JDK (Java Util Logging):
logging.properties
Spring Boot官方推荐优先使用带有 -spring 的文件名作为你的日志配置(如使用 logback-spring.xml ,而不是logback.xml),命名为logback-spring.xml的日志配置文件,spring boot可以为它添加一些spring boot特有的配置项(下面会提到)。
默认的命名规则,并且放在 src/main/resources 下如果你即想完全掌控日志配置,但又不想用logback.xml作为Logback配置的名字,application.yml可以通过logging.config属性指定自定义的名字:
logging.config=classpath:logging-config.xml
这里写代码片虽然一般并不需要改变配置文件的名字,但是如果你想针对不同运行时Profile使用不同的日志配置,这个功能会很有用。
我们项目的日志配置内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 此xml在spring-boot-1.5.3.RELEASE.jar里 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<!-- 开启后可以通过jmx动态控制日志级别(springboot Admin的功能) -->
<!--<jmxConfigurator/>-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<File>/home/hfw-client/hfw_log/stdout.log</File>-->
<File>D:/log/hfw-client/hfw_log/stdout.log</File>
<encoder>
<pattern>%date [%level] [%thread] %logger{60} [%file : %line] %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 添加.gz 历史日志会启用压缩 大大缩小日志文件所占空间 -->
<!--<fileNamePattern>/home/hfw-client/hfw_log/stdout.log.%d{yyyy-MM-dd}.log</fileNamePattern>-->
<fileNamePattern>D:/log/hfw-client/hfw_log/stdout.log.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory><!-- 保留30天日志 -->
</rollingPolicy>
</appender>
<logger name="com.moerlong.hfw.dao" level="DEBUG" />
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
3、打印mybatis的sql语句
比较蠢的方法是直接把root标签的level属性改为DEBUG:
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
这个改为DEBUG则会打印最详细的日志,包括mybatis的sql语句(量太大建议开发测试时才用)
我们一般针对DAO的包进行DEBUG日志设置:
<logger name="com.moerlong.hfw.dao" level="DEBUG" />
这样的话,只打印SQL语句:
4、代码里打印日志
之前我们大多数时候自己在每个类创建日志对象去打印信息,比较麻烦:
private static final Logger logger = LoggerFactory.getLogger(YjServiceImpl.class);
logger.error("xxx");
现在可以直接在类上通过 @Slf4j 标签去声明式注解日志对象
先在pom.xml中添加依赖:
<!--@Slf4j自动化日志对象-log-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
然后就直接可以使用了:
@Slf4j
@RestController
public class HfwController {
log.info("");
}
来源:https://blog.csdn.net/Abysscarry/article/details/80196628


猜你喜欢
- demo下载重要代码://1、此layout作为最外层的layout;//2、设置需要调整的view: setAdjustView(View
- springboot 启动项目打印接口列表环境springboot 2.3.2.RELEASE修改配置文件logging: le
- 示例【通过班级查询老师信息】创建t_classes创建t_classessTeacher创建t_teacher创建Classespackag
- code #1private void Form1_SizeChanged(object sender, EventArgs e) //最小
- 找了半天没有找到postgresql中关于array数组类型的字段如何对应到java中的数据类型,后来找到了mybatis的TypeHand
- 单一职责原则:一个类,只有一个引起它变化的原因。为什么需要单一职责原则?如果一个类有多个原因要去修改它,那么修改一个功能时,可能会让其他功能
- 一、创建字符串创建字符串的方式有很多种,当是常见的一般就三种1. 直接赋值(常用)String str = "hello worl
- 一、length()返回此字符串的长度public static void main4(String[] args) { &n
- 在java 编程中,我们常常有这样的需求:需要将一段字符串内的特定字符串,按照一定规则查找出来或替换,比如匹配文本开头规则和结束规则。以下就
- 一、概述简单理解为 异步消息插队并优先执行。场景:排队买票先来了一个普通用户来排队,买完票走了。后面又来了一个VIP用户A来买票 就一直站在
- 本文实例讲述了C#使用xsd文件验证XML格式是否正确的实现方法。分享给大家供大家参考,具体如下://创建xmlDocumentXmlDoc
- 用途项目中使用了 dubbo,注册中心使用的 zookeeper,使用 zookeeper 实现了一个简单的分布式锁(依赖 curator)
- Android横竖屏切换时,当前的Activity会被销毁,然后Activity上面的数据将会全部丢失。如Listview上面每个item的
- 这里主要介绍的是优先队列的二叉堆Java实现,代码如下:package practice;import edu.princeton.cs.a
- 异步、多线程、任务、并行编程之一:选择合适的多线程模型本篇概述:@FCL4.0中已经存在的线程模型,以及它们之间异同点;@多线程编程模型的选
- 在 javax.validation.constraints包中定义了非常多的校验注解,引入依赖:<dependency> &n
- 接着上一篇继续,老铁们1.检查数组的有序性给定一个整型数组, 判断是否该数组是有序的(升序) public static bo
- 一、场景Java实现文件上传到服务器本地,并通过url访问有个需求,前端上传文件,需要用开关的方式同时支持上传七牛和服务器本地,方便不同的用
- java中有关单链表反转的方法有很多种,这里记录一种并附上详细步骤:代码如下/** * Definition for singly
- MyBatis简介MyBatis前身是iBatis,是一个基于Java的数据持久层/对象关系映射(ORM)框架.MyBatis是对JDBC的