zoukankan      html  css  js  c++  java
  • SpringBoot(三) SpringBoot中的日志配置

    SLF4J

    Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util LoggingLog4JLog4J2Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。

    SLF4J——Simple Logging Facade For Java,它是一个针对于各类Java日志框架的统一Facade抽象。Java日志框架众多——常用的有java.util.logginglog4jlogbackcommons-logging, Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定义了统一的日志抽象接口,而真正的日志实现则是在运行时决定的——它提供了各类日志框架的binding。

    Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。

    默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。在运行应用程序和其他例子时,启动项目输出的日志文件就是。

    日志输出内容元素具体如下:

    • 时间日期:精确到毫秒
    • 日志级别:ERROR, WARN, INFO, DEBUG or TRACE
    • 进程ID
    • 分隔符:--- 标识实际日志的开始
    • 线程名:方括号括起来(可能会截断控制台输出)
    • Logger名:通常使用源代码的类名
    • 日志内容

     日志框架的使用

    1.默认配置

    Spring Boot为我们提供了很多默认的日志配置,所以,只要将spring-boot-starter-logging作为依赖加入到当前应用中即可。

    2.控制台输出顺序

    日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。
    Spring Boot中默认配置ERRORWARNINFO级别的日志输出到控制台。还可以通过启动您的应用程序–debug标志来启用。

     1 @Slf4j
     2 @SpringBootApplication
     3 public class Test01Application {
     4 
     5 
     6     public void index(){
     7 
     8         //日志的级别;
     9         //由低到高   trace<debug<info<warn<error
    10         //可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效
    11         //SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别
    12         log.trace("");
    13         log.debug("测试信息");
    14         log.info("普通信息");
    15         log.warn("警告进行");
    16         log.error("错误信息");
    17 
    18     }
    19 
    20 
    21     public static void main(String[] args) {
    22         SpringApplication.run(Test01Application.class, args);
    23     }
    24 }

    3.级别控制

    所有支持的日志记录系统都可以在Spring环境中设置记录级别(在application.properties中)
    格式为:’logging.level.* = LEVEL’

    • logging.level:日志级别控制前缀,*为包名或Logger名
    • LEVEL:选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

    如果想要在修改日志级别,可以直接在配置文件中设置。

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

     4.切换日志框架

    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>
  • 相关阅读:
    java.lang.IllegalArgumentException: node to traverse cannot be null!
    c3p0连接池的使用
    eclipse插件
    eclipse字体颜色设置
    oracle增删改查
    resultMap / resultType
    oracle 序列 ,check约束
    JSP:一种服务器端动态页面技术的组件规范。
    js
    字体
  • 原文地址:https://www.cnblogs.com/JiangLai/p/9968010.html
Copyright © 2011-2022 走看看