zoukankan      html  css  js  c++  java
  • SpringBoot对日志框架的统一处理以及日志设置

    一、SpringBoot对日志框架的统一处理

    导入SpringBoot启动器

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    默认使用spring-boot-starter-logging做日志依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>

    底层依赖关系如下图,它已经将log4j、jul、jcl进行偷天换日,使用了slf4j替换包将其替换

    总结:

    1. SpringBoot底层也是使用slf4j+logback的方式进行日志记录。

    2. SpringBoot也把其他的日志都替换成了slf4j。

    3. 如果我们要引入其他框架,一定要把这个框架的默认日志依赖移除掉。例如,Spring框架用的是commons-logging

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <exclusions>
    	    <exclusion>
    		    <groupId>commons-logging</groupId>
    		    <artifactId>commons-logging</artifactId>
    	    </exclusion>
        </exclusions>
    </dependency>

    二、SpringBoot日志设置

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

    logging.file

    logging.pathExampleDescription
    (none)(none) 只在控制台输出
    指定文件名(none)my.log

    输出日志到my.log文件

    (none)指定目录/var/log

    输出到指定目录的spring.log文件中

    logging.file=springboot.log      不指定路径,在当前项目下生成名为springboot.log的日志
    logging.file=E:/springboot.log   指定完整的路径,在E盘下生成名为springboot.log的日志
    
    logging.path=/spring/log         在当前项目磁盘的根路径下创建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
    • 自定义日志配置

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

    日志框架配置文件
    Logback

    logback-spring.xml,logback-spring.groovy,logback.xml ,logback.groovy

    Log4j2

    log4j2-spring.xml,log4j2.xml

    JDK (Java UtilLogging)

    logging.properties

    2 如果直接使用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]
    只有把命运掌握在自己手中,从今天起开始努力,即使暂时看不到希望,也要相信自己。因为比你牛几倍的人,依然在努力。
  • 相关阅读:
    【尺取法】Jessica's Reading Problem
    【状态压缩】关灯问题2
    【AC自动机】多模匹配算法
    【蔡勒公式 】根据给定的年月日求出对应星期几
    【线段树】结训赛— H
    【快速幂 && 素数筛 && 数论】Carmichael Numbers
    【线段树】浅析--线段树
    【KMP】数据结构实验之串三:KMP应用
    【线段树】3771->数组计算机
    【字典树】2828 -> 字典树
  • 原文地址:https://www.cnblogs.com/freesky168/p/14358239.html
Copyright © 2011-2022 走看看