0


Spring Boot日志配置及输出

1.日志框架有哪些?

常见的日志框架有log4j、logback、log4j2。

log4j这个日志框架显示是耳熟能详了,在Spring开发中是经常使用,但是据说log4j官方已经不再更新了,而且在性能上比logback、log4j2差了很多。

logback是由log4j创始人设计的另外一个开源日志框架,logback相比之于log4j性能提升了10以上,初始化内存加载也更小了。作为的Spring Boot默认的日志框架肯定是有着不小的优势。

log4j2晚于logback推出,官网介绍性能比logback高,但谁知道是不是王婆卖瓜自卖自夸,坊间流传,log4j2在很多思想理念上都是照抄logback,因此即便log4j2是Apache官方项目,Spring等许多框架项目没有将它纳入主流

slf4j:simple log facade for java,译为简单日志门面。官方介绍为,SLF4J作为各种日志系统的简单Facade或抽象,允许最终用户在部署时插入所需的日志框架。

总结:slf4j是通用的接口规范,log4j、logback、log4j2是具体实现的日志插件。

Spring Boot 默认使用 SLF4J+Logback 记录日志,并提供了默认配置,即使我们不进行任何额外配,也可以使用 SLF4J+Logback 进行日志输出。

2.日志级别

几种常见的日志级别由低到高分为:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。如何理解这个日志级别呢?很简单,如果项目中的日志级别设置为INFO,那么比它更低级别的日志信息就看不到了,即是TRACE、DEBUG日志将会不显示。

3.日志如何使用以及输出

在业务中肯定需要追溯日志,那么如何在自己的业务中输出日志呢?其实常用的有两种方式,下面一一介绍。

第一种其实也是很早之前常用的一种方式,只需要在代码添加如下:

private final Logger logger= LoggerFactory.getLogger(DemoApplicationTests.class);

这种方式显然比较鸡肋,如果每个类中都添加一下岂不是很low。别着急,lombok为我们解决了这个难题。

要想使用lombok,需要添加如下依赖:

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

使用也是很简单,只需要在类上标注一个注解

@Slf4j

即可,如下:

如何定制日志级别?

Spring Boot中默认的日志级别是INFO,但是可以自己定制日志级别,如下:

logging.level.root=DEBUG

** 日志如何输出到文件中?**

Spring Boot中日志默认是输出到控制台的,但是在生产环境中显示不可行的,因此需要配置日志输出到日志文件中。

其中有两个重要配置如下:

  1. logging.file.path:指定日志文件的路径
  2. logging.file.name:日志的文件名,默认为spring.log

注意:官方文档说这两个属性不能同时配置,否则不生效,因此只需要配置一个即可。

指定输出的文件为当前项目路径的

logs

文件下,默认生成的日志文件为

spring.log

,如下:

logging:
  file:
    path: /logs

日志文件中还有一些其他的属性,比如日志文件的最大size,保留几天的日志等等,因此可以自定义日志文件的配置文件

**Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置。因此只需要在

src/resources

文件夹下创建

logback-spring.xml

即可,Springboot在启动可直接扫描,配置文件内容如下:**

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="/logs"/>

    <!--控制台日志, 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--文件日志, 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

     show parameters for hibernate sql 专为 Hibernate 定制 
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
    <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
    <logger name="org.hibernate.SQL" level="DEBUG" />
    <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
    <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />

    <!--myibatis log configure-->
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>

    <!-- 日志输出级别 -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE"/>
    </root>
</configuration>
标签: spring boot java 后端

本文转载自: https://blog.csdn.net/weixin_42672802/article/details/127903378
版权归原作者 青春~要拼搏 所有, 如有侵权,请联系我们删除。

“Spring Boot日志配置及输出”的评论:

还没有评论