当前位置: 代码网 > it编程>编程语言>Java > SpringBoot日志的使用解读

SpringBoot日志的使用解读

2025年02月18日 Java 我要评论
springboot默认使用slf4j作为日志门面(相当于接口),logback作为日志实现(实现可切换)一.默认输出格式1.日期时间2.日志级别(从上至下级别越来越高):trace:追踪框架流程日志

springboot默认使用slf4j作为日志门面(相当于接口),logback作为日志实现(实现可切换)

一.默认输出格式

1.日期时间

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

  • trace:追踪框架流程日志,一般不使用
  • debug:调试日志
  • info:关键、感兴趣日志
  • warn:警告日志
  • error:错误日志

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配置日志

  • appender:负责写日志的组件(输出到控制台、文件、日志服务器、消息队列等等)
  • appender-ref:引用某个appender
  • layout:配置日志输出格式
  • springprofile:配置日志在开发/测试/生产环境生效
  • springproperty:在xml配置中引用yml的配置值
  • property:在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>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com