springboot中引入日志文件生成的配置

412 阅读3分钟

springboot中引入日志文件生成的配置

先实践后理论

📍引入依赖

    <!--web启动器    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.7.2</version>
    </dependency>

提示:你没看错,只需要引入这一个

📍文件引入

在resources下边创建logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds" debug="false">
    <!--定义日志文件的存储地址 -->
    <property name="LOG_HOME" value="e:/IDEA_code/empback/src/main/logs" />

    <!--<property name="COLOR_PATTERN" value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)" />-->
    <!-- 控制台输出 -->
    <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}:%L - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名 -->
            <FileNamePattern>${LOG_HOME}/empback-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--日志文件保留天数 -->
            <MaxHistory>30</MaxHistory>
            <maxFileSize>20MB</maxFileSize>
        </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}:%L - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 生成 error html格式日志开始 -->
    <appender name="HTML" class="ch.qos.logback.core.FileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!--设置日志级别,过滤掉info日志,只输入error日志-->
            <level>ERROR</level>
        </filter>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="ch.qos.logback.classic.html.HTMLLayout">
                <pattern>%p%d%msg%M%F{32}%L</pattern>
            </layout>
        </encoder>
        <file>${LOG_HOME}/error-log.html</file>
    </appender>
    <!-- 生成 error html格式日志结束 -->

    <!-- 每天生成一个html格式的日志开始 -->
    <appender name="FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名 -->
            <FileNamePattern>${LOG_HOME}/empback-%d{yyyy-MM-dd}.%i.html</FileNamePattern>
            <!--日志文件保留天数 -->
            <MaxHistory>30</MaxHistory>
            <MaxFileSize>10MB</MaxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="ch.qos.logback.classic.html.HTMLLayout">
                <pattern>%p%d%msg%M%F{32}%L</pattern>
            </layout>
        </encoder>
    </appender>
    <!-- 每天生成一个html格式的日志结束 -->

    <!--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="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
        <appender-ref ref="HTML" />
        <appender-ref ref="FILE_HTML" />
    </root>

</configuration>

📍启动

启动就可以了 注意文件路径只指定你自己的

<property name="LOG_HOME" value="e:/IDEA_code/empback/src/main/logs" />

📍logback-spring.xmllogback.xml的区别

在 Spring 应用程序中,logback-spring.xmllogback.xml 是两个常见的日志配置文件。它们的主要区别在于处理 Spring Profile 时的行为。

  1. logback-spring.xml:

    • 当使用 logback-spring.xml 作为日志配置文件时,Logback 将会对 Spring Profiles 提供更好的支持。它可以自动加载与激活的 Spring Profile 相对应的日志配置。
    • 另外,logback-spring.xml 支持基于 Spring Boot 中的外部化配置,可以直接使用 Spring Boot 的属性文件(如 application.properties 或 application.yml)中定义的属性。
  2. logback.xml:

    • 如果使用标准的 logback.xml 作为日志配置文件,则不会获得 Spring Profile 相关的功能。这意味着无法利用 Spring Profile 来自动切换日志配置。
    • 此外,logback.xml 通常用于非 Spring 应用程序或者那些不需要特定 Spring Profile 支持的情况。

总的来说,如果你在 Spring 应用程序中使用 Spring Boot,并且想要利用 Spring Profile 自动切换日志配置,推荐使用 logback-spring.xml。如果你的应用程序不使用 Spring Profile 或者没有集成 Spring Boot,那么使用 logback.xml 也是可以的。

📍logback-spring.xml 需要注意的事项

  1. Spring Profile 支持

    • logback-spring.xml 支持 Spring Profile,可以根据不同的环境自动加载对应的日志配置。这意味着你可以针对不同的环境(如开发、测试、生产)定义不同的日志输出行为。
  2. 外部化配置

    • 通过使用 logback-spring.xml,你可以直接利用 Spring Boot 的外部化配置特性,例如直接引用 Spring Boot 的属性文件(如 application.properties 或 application.yml)中的属性来配置日志输出。
  3. Spring Boot 应用程序

    • 如果你的应用程序是基于 Spring Boot 构建的,那么推荐使用 logback-spring.xml。它能够更好地集成到 Spring Boot 的自动配置和外部化配置机制中。
  4. 避免冲突

    • 在使用 logback-spring.xml 时,要确保不要与其他的日志框架配置文件产生冲突。尤其是在 Spring Boot 中,由于自动配置的存在,可能会有多个日志配置文件存在,需要避免产生混乱。
  5. 自定义属性

    • 你可以利用 Spring Boot 的属性文件定义自定义的日志配置属性,并在 logback-spring.xml 中引用这些属性来实现灵活的日志配置。

🍚总结

大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。