spring boot使用logback打印日志

Spring Boot 是由 Pivotal 团队提供的全新框架,大大简化了新 Spring 应用的初始搭建以及开发过程。虽然开发过程简化了,但是日志这一项还是依然重要。

spring boot 默认使用logback 来打印日志,即使我们没有在pom文件里面添加logback的相关的依赖,我们依然能够使用logback 来打印日志。

只要我们引入了起步依赖,我们就可以在dependency里面看到日志的相关依赖。

如果我们没有做相关的配置,那么日志打印的时候,日志格式使用的是默认的格式,很大的概率上是没法满足使用要求的:

这个时候我们可以通过使用配置文件的方式来配置日志格式,使之满足我们的要求。在spring boot项目中,添加配置文件的方式非常简单,只需要在resource文件夹下面,添加logback-spring.xml 文件即可:

当然,如果你想给日志的配置文件起一个符合自己个性的名字或者放在其他的路径下面,你可以在application.properties 里面指定配置文件的路径:

logging.config=classpath:xxx.xml

那么,配置文件里面,我们应该填写哪些内容呢?非常简单,下面我会给出一个模板并带有详细的注释,只需要按照下面的进行配置,那么你就可以快速的配置出一个适合自己logback日志配置文件:

<?xml version="1.0" encoding="UTF-8"?>
 
<!-- scan="true"开启对配置信息的自动扫描(默认时间为60秒扫描一次) 注:当此文件的配置信息发生变化时,此设置的作用就体现出来了,不需要重启服务 -->
<configuration scan="true">
 
  <!-- 通过property标签,来存放key-value数据,便于后面的动态获取,提高程序的灵活性 -->
  <property name="log-dir" value="log" />
  <property name="log-name" value="logFile" />
 
  <!-- >>>>>>>>>>>>>>>>>>>>>>>>>配置appender(可以配置多个)>>>>>>>>>>>>>>>>>>>>>>>>> -->
  <!--
      name:自取即可,
      class:加载指定类(ch.qos.logback.core.ConsoleAppender类会将日志输出到>>>控制台),
    patter:指定输出的日志格式,其中%c和%logger都是记录类的全名称,实际使用的时候可以删除一个
  -->
  <appender name="consoleAppender"
    class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} {%thread} %-5level %logger{36}:[%c][%method][%L]- %msg%n</pattern>
      <!-- 日志编码 -->
      <charset class="java.nio.charset.Charset">UTF-8</charset>
    </encoder>
  </appender>
 
  <!--
    name:自取即可,
    class:加载指定类(ch.qos.logback.core.rolling.RollingFileAppender类会将日志输出到>>>指定的文件中),
    patter:指定输出的日志格式 file:指定存放日志的文件(如果无,则自动创建) rollingPolicy:滚动策略>>>每天结束时,都会将该天的日志存为指定的格式的文件
    FileNamePattern:文件的全路径名模板 (注:如果最后结尾是gz或者zip等的话,那么会自动打成相应压缩包)
  -->
  <appender name="fileAppender"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 把日志文件输出到:项目启动的目录下的log文件夹(无则自动创建)下 -->
    <file>${log-dir}/${log-name}.log</file>
    <!-- 把日志文件输出到:name为logFilePositionDir的property标签指定的位置下 -->
    <!-- <file>${logFilePositionDir}/logFile.log</file> -->
    <!-- 把日志文件输出到:当前磁盘下的log文件夹(无则自动创建)下 -->
    <!-- <file>/log/logFile.log</file> -->
    <rollingPolicy
      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- TimeBasedRollingPolicy策略会将过时的日志,另存到指定的文件中(无该文件则创建) -->
      <!-- 把因为 过时 或 过大 而拆分后的文件也保存到目启动的目录下的log文件夹下 -->
      <fileNamePattern>${log-dir}/${log-name}.%d{yyyy-MM-dd}.%i.log
      </fileNamePattern>
      <!-- 设置过时时间(单位:<fileNamePattern>标签中%d里最小的时间单位) -->
      <!-- 系统会删除(分离出去了的)过时了的日志文件 -->
      <!-- 本人这里:保存以最后一次日志为准,往前7天以内的日志文件 -->
      <MaxHistory>
        7
      </MaxHistory>
      <!-- 滚动策略可以嵌套;
               这里嵌套了一个SizeAndTimeBasedFNATP策略,
                  主要目的是: 在每天都会拆分日志的前提下,
                  当该天的日志大于规定大小时,
                也进行拆分并以【%i】进行区分,i从0开始
        -->
      <timeBasedFileNamingAndTriggeringPolicy
        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>5MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
      <!-- 日志输出格式 -->
      <pattern>%d{HH:mm:ss.SSS} {%thread} %-5level %logger{36}:%L- %msg%n</pattern>
      <!-- 日志编码 -->
      <charset class="java.nio.charset.Charset">UTF-8</charset>
    </encoder>
  </appender>
 
  <!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>使用appender>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -->
  <!--
      指定[哪个包]下使用[哪个appender],并设置 记录到日志文件中的日志的最下
      级别(低于次级别的日志信息不会输出记录到日志文件中)
      注:日志级别有: trace|debug|info|warn|error|fatal
      注:当有多处指定了要记录的日志的最下日志级别时,走优先级最高的,优先级:
         logback-spring.xml中 > 启动jar包时 > xxx.properties/xxx.yml中
  -->
  <logger name="cn" level="info"> 
    <!-- 指定使用哪个appender -->
    <appender-ref ref="consoleAppender" />
  </logger>
  <!--
      root:logger的根节点,appender-ref:确定使用哪个appender,将日志信息显示在console
    注:如果不指定配置此项的话,那么SpringBoot启动后,将不会在console打印任何信息
  -->
  <root level="error">
    <appender-ref ref="consoleAppender" />
  </root>
</configuration>

下面我们试下自己的日志成果:

首先启动spring 项目:

然后,在浏览器访问一下:

访问成功后,查看日志:

可以看到日志的线程名、类名、方法名。行数,都被记录了下来,这对我们后面定位问题会有很大的帮助。

猜你喜欢

转载自blog.csdn.net/qq_34246164/article/details/105624699