• 【串线篇】spring boot日志使用


    、默认配置

    1.SpringBoot默认帮我们配置好了日志;

    //记录器
    Logger  logger  =  LoggerFactory.getLogger(getClass()); @Test
    public void contextLoads() {
    //System.out.println();
    //日志的级别;
    //由低到高,trace<debug<info<warn<error
    //可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效
    logger.trace("这是trace日志...");
    logger.debug("这是debug日志...");
    //SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别
    logger.info("这是info日志...");
    logger.warn("这是warn日志...");
    logger.error("这是error日志...");
    }

    日志输出格式:

    %d表示日期时间,

    %thread表示线程名,

    %‐5level:级别从左显示5个字符宽度

    %logger{50}  表示logger名字最长50个字符,否则按照句点分割。

    %msg:日志消息,

    %n是换行符

    ‐‐>

    %d{yyyy‐MM‐dd  HH:mm:ss.SSS}  [%thread]  %‐5level  %logger{50}  ‐  %msg%n

    2.SpringBoot修改日志的默认配置

    logging.level.com.atguigu=trace
    
    #logging.path=
    # 不指定路径在当前项目下生成springboot.log日志
    # 可以指定完整的路径;
    #logging.file=G:/springboot.log
    
    # 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件
    logging.path=/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

    logging.file

    logging.path

    Example

    Description

    (none)

    (none)

     

    只在控制台输出

    指定文件名

    (none)

    my.log

    输出日志到my.log文件

    (none)

    指定目录

    /var/log

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

    二、指定配置



     

    给类路径下放上每个日志框架自己的配置文件即可;SpringBoot就不使用他默认配置的了

    Logging System

    Customization

    Logback

    logback-spring.xml logback-spring.groovy logback.xml  or

    logback.groovy

    Log4j2

    log4j2-spring.xml  or   log4j2.xml

     

    logging.properties【Logging System对应是JDK ( Java Util Logging)

     

    logback.xml:直接就被日志框架识别了;

    logback-spring.xml:日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot

     

    的高级Profile功能

        <springProfile  name="staging">
        <!‐‐ configuration to be enabled when the "staging" profile is active ‐‐>
        可以指定某段配置只在某个环境下生效
        </springProfile> 

    如:

    <appender  name="stdout"  class="ch.qos.logback.core.ConsoleAppender"> 2        <!‐‐
        日志输出格式:
        %d表示日期时间,
        %thread表示线程名,
        %‐5level:级别从左显示5个字符宽度
        %logger{50}  表示logger名字最长50个字符,否则按照句点分割。
        %msg:日志消息,
        %n是换行符
        ‐‐>
        <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]

     

    三、切换日志框架

    可以按照slf4j的日志适配图,进行相关的切换;

    slf4j+log4j的方式;

    <dependency>
      <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐starter‐web</artifactId>
        <exclusions>
    <exclusion> <artifactId>logback‐classic</artifactId> <groupId>ch.qos.logback</groupId> </exclusion>
    <exclusion> <artifactId>log4j‐over‐slf4j</artifactId> <groupId>org.slf4j</groupId> </exclusion>

    </exclusions> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j‐log4j12</artifactId> </dependency>

    切换为log4j2

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
    <exclusions>
    <exclusion>
    <artifactId>spring‐boot‐starter‐logging</artifactId>
    <groupId>org.springframework.boot</groupId>
    </exclusion>
    </exclusions>
    </dependency>
    
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐log4j2</artifactId>
    </dependency>

     

  • 相关阅读:
    TensorRT 开始
    Vim 常用操作
    Android AsyncTask 的实现及 cancel 方式
    让 Andriod TextView 中的文本链接可点击的方法—— Linkify 及其他
    Android通过百度地图API用Service和Alarm在后台定时获取地理位置信息
    【转】Mac OS X 快捷键合集
    iframe导致的IE6下https页面安全提示
    [转载]IE的版本识别
    [转]iframe异步加载
    IE的html条件注释
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12090240.html
Copyright © 2020-2023  润新知