Spring Boot日志

07-21 662阅读

Spring Boot日志:

  • Spring Boot通过使用Commons Logging框架作为内部日志,但是底层可以在多个日志框架之间进行切换或者集成多个框架
  • 默认采用的日志框架是Logback + Log4j 的实现
  • spring5以后,Commons Logging就被spring整和了, spring-boot-starter中也包含了日志的所有功能
  • Spring Boot的日志是利用监听器配置好的,在项目启动之前就初始化了
  • 在Spring Boot的配置文件中,所有以 logging 开头的配置都是日志的配置
  • @Slf4j 和手动导入Logger log = LoggerFactory.getLogger(getClass());效果一样

    日志门面(日志的抽象层)

    • 日志的门面是为 Java 日志的访问提供了一套标准和规范的 API 框架,也就是日志的抽象层,其主要意义在于提供接口,例如:
    • JCL(Jakarta Commons Logging)(2014后不再维护中)
    • jboss-logging (不适合企业项目开发使用)
    • SLF4j(Simple Logging Facade for Java)

      日志实现

      • 日志实现,简单来说就是实现日志门面(日志的抽象层)中的API接口,例如:
      • Log4j
      • JUL(java.util.logging)(java.util.logging 担心被抢市场推出的一种日志框架)
      • Log4j2 (Apache开发的很强大的日志框架,借助了log4j的名称,但是很多框架都未适配上)
      • Logback(Log4j同一个人开发的新框架,做了重大的升级)

        日志格式:

        • 日期和时间 : 精确到毫秒
        • 日志的级别 :例如 (error、info、warn、debug、trace),Logback 没有FATAL对应的是error级别
        • 进程的标识 : 可以查询该服务的具体进程
        • — : 分割线
        • 线程名称 : 可以是用 […] 框起来 利于查看
        • 记录器名称 : 这通常是运行类的名称
        • 日志消息

          Spring Boot日志

          日志级别,由低到高为:

          • all :打印所有的日志

          • trace:微量,少许的意思,级别最低,一般记录了框架底层的日志,很少使用

          • debug:需要开发调试时候的关键信息打印;

          • info:普通的打印信息(默认日志级别);

          • warn:警告,不影响使用,但需要注意的问题,例如类的版本过时了

          • error:错误信息,级别较高的错误日志信息;

          • fatal:致命的,因为代码异常导致程序退出执行的事件,例如jvm系统崩溃

          • off :关闭所有的日志

            SpringBoot预定义两个组

            • web: 包含org.springframework.core.codec、org.springframework.http、org.springframework.web、org.springframework.boot.actuate.endpoint.web、org.springframework.boot.web.servlet.ServletContextInitializerBeans
            • sql: 包含org.springframework.jdbc.core、org.hibernate.SQL、org.jooq.tools.LoggerListener (如果想要看到执行的sql语句,更改sql包的日志级别即可)

              日志文件输出

              • SpringBoot默认只把日志写在控制台,如果想额外记录到文件,可以在application.properties中添加logging.file.name或logging.file.path配置项
                logging.file.namelogging.file.path示例效果
                未指定未指定仅控制台输出
                指定未指定D:\my.log写入指定文件。可以加路径,默认路径是项目根路径
                未指定指定D:\写入指定目录,文件名为spring.log
                指定指定logging.file.path无效,以logging.file.name为准

                日志文件归档与滚动切割

                • 生产环境应该配置按日志级别分类,并且进行文件归档和滚动切割,防止日志文件过大
                • 归档:每天的日志单独存到一个文档中
                • 切割:每个文件10MB,超过大小切割成另外一个文件
                • 每天的日志应该独立分割出来存档。如果使用logback(SpringBoot默认整合),可以通过application.properties/yaml文件指定日志滚动规则,如果是其他日志系统,需要自己在日志配置文件中进行配置(添加log4j2.xml或log4j2-spring.xml)
                • SpringBoot 默认支持的滚动规则设置为,所以SpringBoot 默认就支持归档和切割
                  配置项描述
                  logging.logback.rollingpolicy.file-name-pattern日志存档的文件名格式(默认值:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz)。需要开启日志文件输出。LOG_FILE就是日志输出的路径和名称
                  logging.logback.rollingpolicy.clean-history-on-start应用启动时是否清除以前存档(默认值:false)
                  logging.logback.rollingpolicy.max-file-size存档前,每个日志文件的最大大小(默认值:10MB)
                  logging.logback.rollingpolicy.total-size-cap日志文件被删除之前,可以容纳的最大大小(默认值:0B,即容纳无限大小)。设置1GB则磁盘存储超过 1GB 日志后就会删除旧日志文件
                  logging.logback.rollingpolicy.max-history日志文件保存的最大天数(默认值:7)
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]