java日志框架

参考博客

NO.1 Spring Boot干货系列:(七)默认日志logback配置解析 【作者:嘟嘟MD】

NO.2 Java日志框架SLF4J和log4j以及logback的联系和区别

NO.3  SLF4J和Logback和Log4j和Logging的区别与联系

 

1. 为什么需要日志

  • 对于程序的运行状态进行监控和行为分析
  • 当程序运行出错时,快速定位问题的位置

2. 日志能做什么

  • 将日志消息打印到控制台、输出到文件等
  • 日志内容可以做格式化,如纯文本、XML、 HTML格式等
  • 对不同类、不同包、不同等级日志可以灵活输出到不同的文件中
  • 可以对日志进行分级,例如测试环境使用debug级别日志,生成环境使用error级别日志

3. 体系简单介绍

3.1 日志接口框架

常见日志接口框架有两个:

  • JCL(Jakarta Commons Logging),又叫做 Apache Commons Logging
  • SLF4J(Simple Logging Facade for JAVA)

日志接口框架只提供了供用户调用的接口,并没有给出具体实现

3.2 日志实现框架

  • JUL(java.util.logging):Java 内置的日志模块,能满足基本的日志需要
  • Log4j、Log4j2:经典的日志解决方式
  • Logback:Log4j的替代产品,出自同一个作者。须要配合日志框架SLF4j使用
  • slf4j-nop:no-operation
  • slf4j-simple:simple

3.3 日志接口框架和日志实现框架

其中,log4j和JUL(java.util.logging)因为没有直接实现slf4j接口框架,所以需要相应的适配器(slf4j-log12、slf4j-jdk14)来将slf4j接口框架和其进行绑定。而logback、slf4j-simple、slf4j-nop直接实现了slf4j接口框架,所以不需要适配器。

3.4 推荐使用 “日志接口框架+日志实现框架

在使用日志时,可以不配合日志接口框架而直接使用日志实现框架,但是并不建议这样使用。

假设项目中已经使用了log4j,而我们此时加载了一个类库,而这个类库依赖另一个日志实现框架。这个时候我们就需要维护两个日志实现框架,这是一个非常麻烦的事情。但是如果配合使用slf4j就不同了,由于应用调用的是日志接口方法,与底层日志实现是无关的,因此可以任意更换具体的日志实现框架。

4. 日志级别

日志级别从低到高分别是

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

级别简单介绍

  • ALL:最低等级。用于打开所有日志记录
  • TRACE:很低的日志级别,一般不会使用
  • DEBUG:通常用在本地调试或测试环境上,打印一些调试的信息
  • INFO:通常用在生产环境上,打印一些重要的监测信息
  • WARN:表明会出现潜在错误的情形,有些信息不是错误信息,但需要给出提示
  • ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行
  • FATAL:每个严重的错误事件将会导致应用程序的退出
  • OFF:最高等级的,用于关闭所有日志记录

大多数日志框架推荐常用的级别是,DEBUG、INFO、WARN、ERROR。

如果将log level设置在某一个级别上,那么比此级别优先级高的log都会打印出来,比此级别优先级低的log都不会打印出来。

5. springboot项目中使用logback日志

如何将日志加入到项目中?下面以在 springboot 项目中引入 logback 日志为例。

5.1 默认情况下

Spring框架使用的是Jakarta Commons Logging API (JCL)。

Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台(即,日志默认级别为INFO)。

5.2 日志信息介绍

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

5.3 引入日志依赖

在 springboot 项目中,只要添加了 spring-boot-starter-logging 依赖,则应用将自动使用 logback 作为应用日志框架。

通过查看依赖可知,spring-boot-starter 已经包含了 spring-boot-starter-logging。而 spring-boot-start-web、mybatis-spring-boot-starter、spring-booter-start-jdbc 等都包含了 spring-boot-starter-logging,所以并不需要直接依赖 spring-boot-starter-logging。

5.4 在 application.properties 配置文件配置日志

假设项目所在目录为 D:\Projects\Test。

  • logging.file

该属性用来指定日志文件路径和文件名(路径可以是绝对路径,也可以是相对路径)。

logg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值