首页 > 其他分享 >SpringBoot日志配置

SpringBoot日志配置

时间:2024-01-27 23:01:37浏览次数:19  
标签:logging SpringBoot spring 配置 boot org 日志 log4j2

1. 简介

  1. Spring使用
    1. spring5及以后 commons-logging被spring直接自己写了。
  1. 支持 log4j2,logback是默认使用的。
  2. 虽然日志框架很多,但是我们不用担心,使用 SpringBoot 的默认配置就能工作的很好

 

SpringBoot怎么把日志默认配置好的

1、每个starter场景,都会导入一个核心场景spring-boot-starter

2、核心场景引入了日志的所用功能spring-boot-starter-logging

3、默认使用了logback + slf4j 组合作为默认底层日志

4、日志是系统一启动就要用xxxAutoConfiguration是系统启动好了以后放好的组件,后来用的。

5、日志是利用监听器机制配置好的。ApplicationListener

6、日志所有的配置都可以通过修改配置文件实现。以logging开始的所有配置都是日志。

 

2. 日志格式

2023-03-31T13:56:17.511+08:00 INFO 4944 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-03-31T13:56:17.511+08:00 INFO 4944 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.7]

默认输出格式:

  • 时间和日期:毫秒级精度
  • 日志级别:WARN, DEBUG, or 注意: logback 没有ERROR
  • 进程 ID
  • ---: 消息分割符
  • 线程名: 使用[]包含
  • Logger 名: 通常是产生日志的类名
  • 消息: 日志记录的内容

    注意: logback 没有FATAL级别对应的是ERROR

     

  • 默认值:参照:spring-bootadditional-spring-configuration-metadata.json文件

    默认输出格式值:%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

    可修改为:'%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} ===> %msg%n'

    3. 记录日志

  • Logger logger = LoggerFactory.getLogger(getClass());

    或者使用Lombok的@Slf4j注解

  • 4. 日志级别

    • 由低到高:ALL,TRACE, DEBUG, INFO, WARN, ERROR,FATAL,OFF
      • 只会打印指定级别及以上级别的日志
      • ALL:打印所有日志
      • TRACE:追踪框架详细流程日志,一般不使用
      • DEBUG:开发调试细节日志
      • INFO:关键、感兴趣信息日志
      • WARN:警告但不是错误的信息日志,比如:版本过时
      • ERROR:业务错误日志,比如出现各种异常
      • FATAL:致命错误日志,比如jvm系统崩溃
      • OFF:关闭所有日志记录
    • 不指定级别的所有类,都使用root指定的级别作为默认级别
    • SpringBoot日志默认级别是 INFO

     

    1. 在logging.level.<logger-name>=<level>指定日志级别
    2. TRACE, DEBUG, INFO, WARN, ERROR, FATAL, or OFF,定义在 LogLevel类中
    3. root 的root,可以配置

      5. 日志分组

      比较有用的技巧是:

      将相关的logger分组在一起,统一配置。SpringBoot 也支持。比如:Tomcat 相关的日志统一设置

      logging.group.tomcat=org.apache.catalina,org.apache.coyote,org.apache.tomcat
      logging.level.tomcat=trace

      SpringBoot 预定义两个组

      Name

      Loggers

      web

      org.springframework.http, org.springframework.boot.actuate.endpoint.web,

      sql

      org.hibernate.SQL, 6. 文件输出

       

       

       

      6. 文件输出

      SpringBoot 默认只把日志写在控制台,如果想额外记录到文件,可以在logging.file.name or logging.file.path配置项。

       

       

      7. 文件归档与滚动切割

      归档:每天的日志单独存到一个文档中。

      切割:每个文件10MB,超过大小切割成另外一个文件。

      1. 每天的日志应该独立分割出来存档。如果使用application.properties/yaml文件指定日志滚动规则。
      2. 如果是其他日志系统,需要自行配置(添加log4j2-spring.xml)
      3. 支持的滚动规则设置如下

       

      8. 自定义配置

      通常我们配置application.properties 就够了。当然也可以自定义。比如:

       

      如果可能,我们建议您在日志配置中使用-spring 变量(例如,logback-spring.xml 而不是 logback.xml)。如果您使用标准配置文件,spring 无法完全控制日志初始化。

      最佳实战:自己要写配置,配置文件名加上 xx-spring.xml

      9. 切换日志组合

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

      log4j2支持yaml和json格式的配置文件

      格式

      依赖

      文件名

      YAML

      com.fasterxml.jackson.core:jackson-databind + com.fasterxml.jackson.dataformat:jackson-dataformat-yaml

      log4j2.yaml + log4j2.yml

      JSON

      com.fasterxml.jackson.core:jackson-databind

      log4j2.json + log4j2.jsn

       

       

标签:logging,SpringBoot,spring,配置,boot,org,日志,log4j2
From: https://www.cnblogs.com/zhbx/p/17991986

相关文章

  • 查看、清空Linux日志【系统日志、软件运行日志】
    一、各种系统日志文件位置123456789101112131415/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息 /var/log/cron:      记录crond计划任务产生的事件信息 /var/log/dmesg:     记录Linux操作系统在引导过程......
  • 如何改Maven Dependencies的源码,如何把springboot组件的源码改造后使用
    由于springboot提供的源码有些地方不太符合预期,所以需要改动改动,这里就会说到,如何改MavenDependencies的源码。如何把springboot组件的源码改造后使用。v修改源码的几种方式直接在自己工程中建同包同类名的类进行替换采用@Primary注解排除需要替换的jar包中的类@Bean......
  • Windows 下 Nginx 配置 多个conf 文件的过程与注意事项
    Windows下配置Nginx使用多个conf文件的Include路径与Linux有所不同。 如上:Windows:include../conf.d/*.confLinux:include /etc/nginx/conf.d/*.conf; 分别来看单个配置文件的内容:总配置文件nginx.conf###########################################......
  • [postgres]配置主从异步流复制
    前言环境信息IP角色操作系统PostgreSQL版本192.168.1.112主库Debian1215.3192.168.1.113从库Debian1215.3配置主从修改主库的postgresql.conf文件。修改此配置文件需重启数据库服务。归档脚本内容见"附录-clean_archivelog"listen_addresses='*......
  • 三级计算机网络大题60分——来自B站“吃饭不留名”(综合题2:思科交换机配置 10分)
    https://www.bilibili.com/video/BV1hE411x7RT?p=4&spm_id_from=pageDriver&vd_source=2bddda168481f778f8f92561c7e55574真题演练1/40的几率......
  • 论一个优秀的日志采集系统是如何设计和实现数据处理的
    作者观测云系统开发工程师李国壮前言日志采集系统的执行过程,从“定位日志”开始,然后是“数据采集和处理”,最后则是“同步采集状态”。本文主要介绍第二项,即数据的采集和解析,其中包含了很多细节处理,将会影响到采集效率、解析结果等各个方面。数据采集和解析读取数据并分割......
  • 比elk还香的日志平台
    作者观测云产品技术专家深圳办公室黄小龙写在前面的话日志是开发人员记录系统运行状态的最佳手段,是一个系统的重要组成部分。日志通常不属于系统的核心功能,但却是我们了解系统运行用的最多的功能。对于开发和运维人员来说,好的日志可以帮助我们了解系统运行的状态、快速定位解......
  • Springboot CRUD简单实现
    SpringBoot对Spring的改善和优化,它基于约定优于配置的思想,提供了大量的默认配置和实现使用SpringBoot之后,程序员只需按照它规定的方式去进行程序代码的开发即可,而无需再去编写一堆复杂的配置SpringBoot的主要功能如下:起步依赖:SpringBoot以功能化的方式将需要的依赖进行组装,并......
  • .net core 配置跨域访问
    在Startup类里面先配置ConfigureServices方法#region跨域访问string[]coreslink=Configuration.GetSection("AppSetting:Cores").Value.Split(',');//services.AddCors(options=>//{//options.AddPolicy("all&quo......
  • SpringBoot启动过程中发布的事件
    springboot启动过程中会发布的事件(启动类的run()方法执行时)ApplicationStartingEvent:应用运行开始事件SpringBoot运行run()方法未进行任务操作时先发布此事件ApplicationEnvironmentPreparedEvent:Environment准备完成事件在Environement准备完成且应用上下文context......