java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot日志

SpringBoot日志的使用解读

作者:Exill

本文主要介绍了SpringBoot中日志的使用方法,包括默认输出格式、使用Lombok简化日志代码、通过yml和xml配置日志等

SpringBoot默认使用SLF4J作为日志门面(相当于接口),Logback作为日志实现(实现可切换)

一.默认输出格式

1.日期时间

2.日志级别(从上至下级别越来越高):

3.进程ID

4.---:消息分隔符

5.线程名:用[]包裹

6.Logger名:产生这条日志的类名

7.消息:具体日志内容

二.使用

@Service
public class UserService{//创建UserService类对应的Logger(SLF4J包下)
    private Logger logger= LoggerFactory.getLogger(getClass());
    public void useLogger() {//使用                
        Loggerlogger.trace("TRACE");
        logger.debug("DEBUG");
        logger.info("INFO {} {}", "参1", "参2");
        logger.warn("WARN");
        logger.error("ERROR");
}

导入lombok后使用@Slf4j注解,会自动创建变量名为log的Logger

只会输出INFO及以上的日志级别,因为SpringBoot默认日志级别为INFO

三.配置

通过yml文件配置日志(以logging开头的日志)

项目中通常不使用该方式

原因:

  1. 日志需要较多自定义,放yml里导致其他配置也难以阅读
  2. yml提供的日志配置只支持logback实现,切换实现后不可用
  3. yml提供的logback配置不够全面

通过xml配置日志

logback-spring.xml模板示例

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--读取yml配置中的spring.application.name值赋值给FILE_NAME变量-->
    <springProperty scope="context" name="FILE_NAME" source="spring.application.name"/><!--定义FILE_PATH变量-->
    <property name="FILE_PATH" value="./logs"/>
    <springProfile name="dev"><!--开发环境的日志配置-->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!--输出到控制台-->
            <layout><!--设置日志格式-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern>
            </layout>
        </appender>
        <root level="info"><!--设置日志等级 及 生效appender-->
            <appender-ref ref="STDOUT"/>
        </root>
    </springProfile>
    <springProfile name="test"><!--测试环境的日志配置-->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <layout>
                <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern>
            </layout>
        </appender><!--输出到文件,文件会根据日期、大小进行归档-->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--文件路径-->
                <fileNamePattern>${FILE_PATH}/${FILE_NAME}%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxHistory>30</maxHistory><!--文件保存天数-->
                <maxFileSize>10MB</maxFileSize><!--一个文件最大值-->
            </rollingPolicy>
            <layout>
                <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern>
            </layout>
        </appender>
        <root level="info">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE"/>
        </root>
    </springProfile>
    <springProfile name="prod"><!--生产环境的日志配置-->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${FILE_PATH}/${FILE_NAME}%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxHistory>30</maxHistory>
                <maxFileSize>10MB</maxFileSize>
            </rollingPolicy>
            <layout>
                <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern>
            </layout>
        </appender>
        <root level="error">
            <appender-ref ref="FILE"/>
        </root>
    </springProfile>
</configuration>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文