SpringBoot----日志框架和配置

Posted 大忽悠爱忽悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot----日志框架和配置相关的知识,希望对你有一定的参考价值。

日志框架分类和选择


SLF4j使用

SLF4j用户手册

SLF4j用户手册


使用图示—需要导入的jar包



统一日志记录,即使是别的框架,也和我一起使用slf4j进行输出

如何让系统中所有日志统一使用slf4j

  1. 将系统中其他的日志框架先排除出去
  2. 用中间包替换原有的日志框架
  3. 我们导入slf4j其他的实现

SpringBoot日志关系





日志使用

1.springBoot默认已经帮我们配置了日志配置

关于使用logger.trace()里面传入字符串爆红问题===》自动导包导入导入的包不匹配

spring boot日志使用trace()方法时‘trace(java.util.function.Supplier<java.lang.String>)‘…报错的解决


SpringBoot默认日志级别是info级别的,没有指定级别的就使用springboot默认规定的级别===》root级别===》info级别

日志级别
由低到高:trace<debug<info<warn<error
可以调整输出的日志级别,日志就只会在这个级别以后的高级别生效

@RunWith(SpringRunner.class)
@SpringBootTest
class SpringBootQuickStartOneApplicationTests {
    //记录器
    Logger logger= LoggerFactory.getLogger(getClass());
    @Test
    public void contextLoads()
    {
      //日志级别
        //由低到高:trace<debug<info<warn<error
        //可以调整输出的日志级别,日志就只会在这个级别以后的高级别生效
        logger.trace("这是trace日志...");
        logger.debug("这是debug日志");
        //springBoot默认给我们使用的是info级别的
        logger.info("这是info级别");
        logger.warn("这是warn级别");
        logger.error("这是error级别");
    }
}


SpringBoot日志设置

  • 日志级别由低到高:trace、debug、info、warning、error。
  • SpringBoot的默认日志级别为info,调整日志级别的方法为:在application.properties文件中进行调整:
  • logging.level.包名(.类名)=级别A—>调整某个包(类)的最低日志级别为A。

修改默认日志配置:

logging.file=springboot.log      不指定路径,在当前项目下生成名为springboot.log的日志
logging.file=E:/springboot.log   指定完整的路径,在E盘下生成名为springboot.log的日志
 
logging.path=/spring/log         在当前项目磁盘的根路径(如果不改为c盘)下创建spring文件夹和里面的log文件夹;使用 
                                 spring.log作为默认文件
 
指定在控制台输出的日志的格式
logging.pattern.console=%d{yyyy‐MM‐dd} [%thread] %‐5level %logger{50} ‐ %msg%n
 
指定文件中日志输出的格式
logging.pattern.file=%d{yyyy‐MM‐dd} ===[%thread] ===%‐5level ===%logger{50} ====%msg%n

日志输出格式参照:


%d-->表示日期时间,
%thread-->表示线程名,
%‐5level-->级别从左显示5个字符宽度
%logger{50} -->表示logger名字最长50个字符,否则按照句点分割。
%msg-->日志消息,%n是换行符
 
%d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n

自定义日志配置

给类路径下放上每个日志框架自己的配置文件,SpringBoot将不使用默认配置


如果直接使用logback-spring.xml为文件名,日志框架就不会直接加载日志的配置项,而是由SpringBoot解析日志配置,可以使用SpringBoot的高级Profile功能===》指定某段配置只在某段环境下生效

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <!--可以指定某段配置只在某个环境下生效-->
        <!--生产环境生效-->
        <springProfile name="dev">
            <pattern>%d{yyyy‐MM‐dd HH:mm:ss.SSS} ‐‐‐‐> [%thread] ‐‐‐> %‐5level%logger{50} ‐ %msg%n</pattern>
        </springProfile>
        <!--非生产环境生效-->
        <springProfile name="!dev">
            <pattern>%d{yyyy‐MM‐dd HH:mm:ss.SSS} ==== [%thread] ==== %‐5level%logger{50} ‐ %msg%n
            </pattern>
        </springProfile>
    </layout>
</appender>

如果直接使用logback.xml为文件名,它将直接被日志框架识别,如果继续使用profile功能,会有以下错误:

no applicable action for [springProfile]

SpringBoot对日志框架的统一处理以及日志设置可以参考下面这篇文章

SpringBoot对日志框架的统一处理以及日志设置


切换日志框架参考下面这篇文章

springboot 日志框架的使用与切换

以上是关于SpringBoot----日志框架和配置的主要内容,如果未能解决你的问题,请参考以下文章

springboot配置logback日志

SpringBoot整合+logback日志配置

SpringBoot整合+logback日志配置

重学SpringBoot系列之日志框架与全局日志管理

JAVAEE——SpringBoot日志篇:日志框架SLF4j日志配置日志使用切换日志框架

springBoot日志框架自动配置与原理