转载

SpringBoot 入门:07 - 调试与日志

我们使用 Spring Boot 官方的 spring-boot-starter-logging 作为日志依赖,在 pom.xml 文件中加入依赖就可以开箱即用:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-logging</artifactId>
</dependency>
复制代码

控制台调试

当我们在开发的时候,难免需要在控制台自定义输出一些东西来追踪,可以通过在类上添加 @Slf4j 注解,然后在方法内部就可以使用注入的 log 变量输出调试:

log.warn("xfly demo.........");
复制代码

注意默认是只有 ERROR、WARN、INFO 三种级别的日志会输出到控制台,在开发的时候可以把级别设置为 DEBUG,在 application-dev.yml 文件中设置 logging.level 为 debug 即可

自定义日志格式

自己在控制台输出的调试格式倒无所谓,但是我们往往需要把日志记录到文件中,尤其是线上环境,对于排错分析都非常有用,日志这块也有非常成熟的重型方案,我们暂时用 Spring 内置的 Logback 即可,更适合现在的这个项目。

配置 Logback 只需要在 resources 目录下新建一个 logback-spring.xml 文件,在其中配置:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <springProperty scope="context" name="logging.file.path" source="logging.file.path"/>
    <contextName>wxbox</contextName>
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%yellow(%d{yyyy-MM-dd HH:mm:ss}) %red([%thread]) %highlight(%-5level) %cyan(%logger{50}) - %magenta(%msg) %n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logging.file.path}/wxbox.info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <MaxHistory>90</MaxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logging.file.path}/wxbox.error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <MaxHistory>90</MaxHistory>
        </rollingPolicy>
    </appender>
    <root level="info">
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>
</configuration>
复制代码

大概说明一下几大块内容:

• 通过 springProperty 标签声明并创建了一个 logging.file.path 变量,对应在 application.yml 中的 logging.file.path 配置项,这样下面的标签里都可以使用这个变量,实现动态配置的目的。

• 每一个 appender 标签都可以看作一台打印机,可以是用于控制台输出的 ConsoleAppender,也可以是用于文件输出的 RollingFIleAppender。

• 每一个 appender 都可以通过 pattern 标签设置输出格式,对于控制台输出可以额外设置颜色,文件输出的话就没有颜色不颜色了,格式有非常多,可以去 官网文档 看看。

• 对于 RollingFIleAppender 可以设置滚动策略,比如按天为单位记录日志,记录的最大天数,单文件的最大文件大小等。

• 最后通过 root 标签创建这些 appender。

原文  https://juejin.im/post/5f1128166fb9a07e7f6bee3d
正文到此结束
Loading...