一. 主流日志框架

市场上存在非常多的日志框架。 JUL(java.util.logging),JCL(Apache Commons Logging),Log4j,Log4j2,Logback、 SLF4j、 jboss-logging等。 Spring Boot在框架内容部使用JCL,spring-boot-starter-logging采用了 slf4j+logback的形式,Spring Boot也能自动适配(jul、 log4j2、 logback) 并 简化配置。

在写log4j的两种配置方式(xml和propertiies)时我就在想“为什么使用log4j时需要导入self4j、log4j和整合jar包”?

经过一番的周折之后,终于获取到了答案,其实答案很简单,日志分为两类:日志门面和日志实现两种,这两个之间的关系相当于java中接口和实现类的关系,接下来对上面的日志框架做一下简单的分类:ble data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">日志门面日志实现

他们之间不是一一对应关系,只是这样写看起来美观点。

二、日志的使用SpringBoot:底层是Spring框架,Spring框架默认是用JCL

SpringBoot选用SLF4j和logback

以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;给系统里面导入slf4j的jar和logback的实现jar

public class HelloWorld {

Logger logger = LoggerFactory.getLogger(HelloWorld.class);

}

1、jar包的引入

从上面可知,导入日志需要在上面表中选择一个日志门面和一个日志实现。下面以Slf4j为例展示其对应关系如下:

这里又有一个问题,springboot默认使用SLF4j和logback,底层spring默认使用JCL,然后如果导入了Hibernate(jboss-logging),如何使别的框架和我一起统一使用slf4j进行输出?

查看Slf4j的官方文档时,确实有解决方法,如下:

其解决思路如下:将系统中其他日志框架先排除出去;

用中间包来替换原有的日志框架;

我们导入slf4j其他的实现

springboot中的日志关系

org.springframework.boot

spring‐boot‐starter

总结:SpringBoot底层也是使用slf4j+logback的方式进行日志记录

SpringBoot也把其他的日志都替换成了slf4j;

中间替换包如:log4j-to-slf4j.jar...

org.springframework

spring‐core

commons‐logging

commons‐logging

springboot的处理方法和上面的图解如出一辙,先把其它都转换为Slf4j,支持多种日志实现。springboot2.1.6.RELEASE默认导入了Slf4j、logback和log4j,因此你不需要导入日志的相关jar包就可以使用日志的功能!

2、配置文件的编写每一个日志的实现框架都有自己的配置文件。使用slf4j以后,配置文件还是做成日志实现框架自己本身的配置文 件;

logback的配置文件请参考:

#指定日志配置文件路径

# logging.config=classpath:/logback-spring.xml

# 日志文件存放路径

#logging.path=/spring/log

# 指定日志文件名

# logging.file=my.log

# 历史日志文件的最大保存量

# logging.file.max-history=100000

# 指定日志打印级别,可以配置多个

#logging.level.com.hiberate.orcal_and_hiberate=debug

##

### 日志文件最大空间

##logging.file.max-size=10M

# 日志输出格式:

# %d表示日期时间,

# %thread表示线程名,

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

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

# %msg:日志消息,

# %n是换行符

# 日志控制台打印格式

#logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level%logger{50}-%msg%n

#

## 日志输出的时间格式

#logging.pattern.dateformat=%d{yyyy-MM-dd HH:mm:ss.SSS}

#

## 日志输出到文件中的格式

#logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%n

#

## 在输出日志中添加输出级别

#logging.pattern.level=%5p

#

#logging.exception-conversion-word=%wEx

java 日志框架 详解_springboot日志详解相关推荐

  1. 学习Java日志框架之——搞懂日志门面(JCL+SLF4J)

    文章目录 系列文章目录 一.什么是日志门面 1.门面模式(外观模式) 2.日志门面 二.了解JCL 1.JCL组件结构 2.JCL案例 (1)JCL默认实现 (2)导入log4j测试原有程序 三.SL ...

  2. .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)...

    18 | 日志框架:聊聊记日志的最佳姿势 除了使用 CreateLogger 指定 logger 的名称,实际上还可以借助容器来构造 logger,通常情况下我们会定义自己的类 namespace L ...

  3. .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(上)...

    18 | 日志框架:聊聊记日志的最佳姿势 源码链接: https://github.com/witskeeper/geektime/tree/master/samples/LoggingSimpleD ...

  4. 【日志框架-笔记】JUL日志框架的介绍及其使用

    日志框架 JUL日志框架 入门程序 Logger直接的父子继承关系 Formatters 独立的配置文件进行编写日志 使用日志打印异常 学习日志无非就是为了四大目的: 问题诊断,调试程序: 错误定位, ...

  5. C语言日志级别和作用,自己写的C语言通用日志框架,可以控制日志输出等级

    /************************************c语言通用日志框架************************************ * * @author 南栀(ke ...

  6. java web 框架整合开发_SpringBoot(二)Web整合开发

    本篇文章接着上篇内容继续为大家介绍spring boot的其它特性(有些未必是spring boot体系桟的功能,但是是spring特别推荐的一些开源技术本文也会介绍),对了这里只是一个大概的介绍,特 ...

  7. 日志框架NLog之将日志发送到邮件

    背景 NLog可以将日志输出到不同的媒介上,邮件是其中一个,通过邮件可以让我们第一时间收到信息.使用SMTP协议通过电子邮件发送日志消息.与FallbackGroup Target很好地结合在一起,以 ...

  8. java日志框架详解

    一,日志的概念 日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断 问题的追踪以及理解系统的活动等重要作用. 二,现有的日志框架 JUL(java util l ...

  9. Java日志门面- JCL和 常用日志门面SLFJ详解

    使用日志门面的原因 目前经常用的日志框架技术有:JUL.Log4j.log4j2.logback用来记录日志信息 ,之前我们讲过,我们学习不同的日志框架.他们的API是不同的,这样难以进行有效的记忆, ...

  10. springboot日志配输出路径配置_SpringBoot日志配置详解

    前言 ​记录应用系统曰志主要有三个原因 记录操作轨迹.监控系统运行状况.回溯系统故障.记录操作行为及操作轨迹数据,可以数据化地分析用户偏好,有助于优化业务逻辑,为用户提供个性化的服务.例如,通过 ac ...

最新文章

  1. 【LeetCode】3Sum Closest 解题报告
  2. 当RxJava遇到AOP
  3. 李开复写给中国学生的七封信之给中国学生的第七封信——21世纪最需要的7种人才续1...
  4. @ResponseBody,@RequestBody,@PathVariable
  5. 【机器学习】监督学习--(回归)岭回归
  6. 运放输入偏置电流方向_连载 | 运放参数的详细解释和分析part2如何测量输入偏置电流Ib和输入失调电流Ios...
  7. Simplification of Articulated Meshes (EURO 09)
  8. 跨境电商独立站建站优化清单
  9. vue 父子组件传值以及方法调用,平行组件之间传值以及方法调用大全
  10. Atitit 眼科医学之道 attilax总结
  11. 基于Opencv实现车牌图片识别系统
  12. 清明上河图轴卷图滑动
  13. Ubuntu16.04 解决外置USB蓝牙模块链接蓝牙耳机没有声音输出问题
  14. 没有互联网,如何本地获取到LoRaWAN的终端数据?
  15. python实现下载压缩包并且解压
  16. Golang 字符串拼接
  17. 微信公众号开发一:接入指南
  18. 产品经理如何建立和促进心理安全
  19. LeetCode刷题EASY篇Linked List Cycle
  20. 算法分析与设计第十四次作业(leetcode中Cherry Pickup题解)

热门文章

  1. [预打印]使用vbs给PPT(包括公式)去背景
  2. iOS-解决UITableView有footerView时最后一个cell不显示分割线问题
  3. JAVA设计模式---单例模式的几种实现方式比较
  4. ElasticSearch全文搜索引擎之Windows集群搭建
  5. 【Hoxton.SR1版本】Spring Cloud Gateway之Predicate详解
  6. 多线程之生产者与消费者问题
  7. Java网络编程之URL、URLConnection、URLEncoder、URLDecoder
  8. FusionCharts破解方法
  9. kafka connect分布式安装
  10. Struts数据传输问题-- 数据超出2M时会导致映射数据丢失