当前位置: 首页 > 编程笔记 >

SpringBoot项目的logback日志配置(包括打印mybatis的sql语句)

仲孙文乐
2023-03-14
本文向大家介绍SpringBoot项目的logback日志配置(包括打印mybatis的sql语句),包括了SpringBoot项目的logback日志配置(包括打印mybatis的sql语句)的使用技巧和注意事项,需要的朋友参考一下

关于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("");
}

到此这篇关于SpringBoot项目的logback日志配置(包括打印mybatis的sql语句)的文章就介绍到这了,更多相关SpringBoot logback日志配置内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 我的springboot项目中想要异步打印日志到文件,对 logback 做了如下配置 java的controller中使用下面代码打印日志 在日志文件中打印出线程名称,同时在IDEA控制台中也打印线程名称,照理说如果是异步写入的日志这两处的线程名称应该不一样,结果日志文件中输出的结果是 控制台中输出的是 线程ID和名称分别是:86 / http-nio-7076-exec-2 两处的线程名称一样

  • 我在记录调用类的类名时遇到问题。我在logback中编写了日志实用程序类。出于性能原因,我使用单例模式创建了记录器实用程序。但是,当我从其他类调用日志语句时,我会打印实用工具的类名,而不是调用类。 测试课就像 我得到的输出如下打印而不是LogUtilTest,我需要帮助记录我的调用类名 2014-04-14 16:47:21信息[main]MyModule[LogUtil.info:42]类名[c

  • 本文向大家介绍Spring Boot配置AOP打印日志的全过程,包括了Spring Boot配置AOP打印日志的全过程的使用技巧和注意事项,需要的朋友参考一下 前言 在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码。 一、Spring AOP AOP(Aspect-Oriented Programmin

  • 当我将应用程序运行到容器中时,我可以看到以下输出: Docker日志 现在,从docker实例中,我只看到“stdout”: root@3acd2bd90da4:/usr/src/app#./bin/run.sh 它错过了docker日志命令中以Traceback(stderr)开头的错误部分 当我在容器中运行命令时,我能做些什么来打印所有的日志? 谢啦

  • 当我运行这段代码时,没有任何东西被打印到控制台。我应该如何使用logp?

  • 我有以下情况:一个使用日志的Spring启动应用程序,以及已经在应用程序中配置的几个日志记录属性 我想添加其他只能通过文件可用的配置选项,但是一旦我将此文件添加到类路径(无论它被命名为还是),它就会覆盖中的所有内容,并且所有日志记录级别/模式以及那里定义的其他选项都不再有效 - 似乎在添加的所有选项 被忽略,我需要在xml文件中重新添加它们而不是yml。 我的问题是:是否可以合并这两个配置?我的意

  • 本文向大家介绍springboot+log4j.yml配置日志文件的方法,包括了springboot+log4j.yml配置日志文件的方法的使用技巧和注意事项,需要的朋友参考一下 一,Maven 依赖 pom.xml配置 1, 去掉默认日志,以便切换到log4j2的日志依赖 2, 然后添加如下两个日志依赖 二,在工程根目录下添加 lo4g2.yml 配置文件 2, 配置文件内容 三,在工程根目录下

  • 本文向大家介绍SpringBoot中logback日志保存到mongoDB的方法,包括了SpringBoot中logback日志保存到mongoDB的方法的使用技巧和注意事项,需要的朋友参考一下 Springboot默认集成的就是logback,logback相对来说是优秀于log4j的,log4j2也是参考了logback的设计。 自定义Appender非常简单,继承一下AppenderBas