phper学习springboot-les5-日志

272 阅读1分钟

我们在开发当中或者项目已经发布到prd之后,不管哪个环节,日志总是必不可少的。它是我们排查问题的有利工具。这节我们就来讨论下spring-boot的日志。

需求

  1. 能用文件记录日志,单单是输出到控制台不保存是没有办法追溯久远的问题的。
  2. 业务日志和系统日志区分对待,业务日志才记录到特定文件中。
  3. 能将日志进行归档处理或分片处理,防止日志文件过大。

logback

springboot的logback就能满足这个需求。

Spring Boot使用Commons Logging进行所有内部日志记录,但是使底层日志实现保持打开状态。提供了Java Util Logging,Log4J2和Logback的默认配置。在每种情况下,记录器都已预先配置为使用控制台输出,同时还提供可选文件输出。

在resource目录下的logback-spring.xml会被默认加载。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
    <!-- 引入默认的配置,可以直接使用 -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <!-- 定义一个控制台输出配置 -->
    <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
     <!-- 定义一个文件输出配置 -->
    <appender name="FILELOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}_BIZ.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}_BIZ.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
            <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
            <maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
        </rollingPolicy>
    </appender>
    <root level = "INFO">
        <appender-ref ref = "STDOUT"/> 
    </root>
      <!-- 对特定包下的日志做特殊处理 -->
    <logger name="com.vison" additivity="false" level="debug">
        <!-- 引用自定义的appender -->
        <appender-ref ref="FILELOG"/>
        <!-- 这里也引用控制台appender,才能在控制台中看到我们的日志 -->
        <appender-ref ref="STDOUT"/>
    </logger>
</configuration>

logging.file.name 配置会定义日志文件输出的文件名和路径