java 日志框架 详解_springboot日志详解
一. 主流日志框架
市场上存在非常多的日志框架。 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日志详解相关推荐
- 学习Java日志框架之——搞懂日志门面(JCL+SLF4J)
文章目录 系列文章目录 一.什么是日志门面 1.门面模式(外观模式) 2.日志门面 二.了解JCL 1.JCL组件结构 2.JCL案例 (1)JCL默认实现 (2)导入log4j测试原有程序 三.SL ...
- .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)...
18 | 日志框架:聊聊记日志的最佳姿势 除了使用 CreateLogger 指定 logger 的名称,实际上还可以借助容器来构造 logger,通常情况下我们会定义自己的类 namespace L ...
- .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(上)...
18 | 日志框架:聊聊记日志的最佳姿势 源码链接: https://github.com/witskeeper/geektime/tree/master/samples/LoggingSimpleD ...
- 【日志框架-笔记】JUL日志框架的介绍及其使用
日志框架 JUL日志框架 入门程序 Logger直接的父子继承关系 Formatters 独立的配置文件进行编写日志 使用日志打印异常 学习日志无非就是为了四大目的: 问题诊断,调试程序: 错误定位, ...
- C语言日志级别和作用,自己写的C语言通用日志框架,可以控制日志输出等级
/************************************c语言通用日志框架************************************ * * @author 南栀(ke ...
- java web 框架整合开发_SpringBoot(二)Web整合开发
本篇文章接着上篇内容继续为大家介绍spring boot的其它特性(有些未必是spring boot体系桟的功能,但是是spring特别推荐的一些开源技术本文也会介绍),对了这里只是一个大概的介绍,特 ...
- 日志框架NLog之将日志发送到邮件
背景 NLog可以将日志输出到不同的媒介上,邮件是其中一个,通过邮件可以让我们第一时间收到信息.使用SMTP协议通过电子邮件发送日志消息.与FallbackGroup Target很好地结合在一起,以 ...
- java日志框架详解
一,日志的概念 日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断 问题的追踪以及理解系统的活动等重要作用. 二,现有的日志框架 JUL(java util l ...
- Java日志门面- JCL和 常用日志门面SLFJ详解
使用日志门面的原因 目前经常用的日志框架技术有:JUL.Log4j.log4j2.logback用来记录日志信息 ,之前我们讲过,我们学习不同的日志框架.他们的API是不同的,这样难以进行有效的记忆, ...
- springboot日志配输出路径配置_SpringBoot日志配置详解
前言 记录应用系统曰志主要有三个原因 记录操作轨迹.监控系统运行状况.回溯系统故障.记录操作行为及操作轨迹数据,可以数据化地分析用户偏好,有助于优化业务逻辑,为用户提供个性化的服务.例如,通过 ac ...
最新文章
- 【LeetCode】3Sum Closest 解题报告
- 当RxJava遇到AOP
- 李开复写给中国学生的七封信之给中国学生的第七封信——21世纪最需要的7种人才续1...
- @ResponseBody,@RequestBody,@PathVariable
- 【机器学习】监督学习--(回归)岭回归
- 运放输入偏置电流方向_连载 | 运放参数的详细解释和分析part2如何测量输入偏置电流Ib和输入失调电流Ios...
- Simplification of Articulated Meshes (EURO 09)
- 跨境电商独立站建站优化清单
- vue 父子组件传值以及方法调用,平行组件之间传值以及方法调用大全
- Atitit 眼科医学之道 attilax总结
- 基于Opencv实现车牌图片识别系统
- 清明上河图轴卷图滑动
- Ubuntu16.04 解决外置USB蓝牙模块链接蓝牙耳机没有声音输出问题
- 没有互联网,如何本地获取到LoRaWAN的终端数据?
- python实现下载压缩包并且解压
- Golang 字符串拼接
- 微信公众号开发一:接入指南
- 产品经理如何建立和促进心理安全
- LeetCode刷题EASY篇Linked List Cycle
- 算法分析与设计第十四次作业(leetcode中Cherry Pickup题解)
热门文章
- [预打印]使用vbs给PPT(包括公式)去背景
- iOS-解决UITableView有footerView时最后一个cell不显示分割线问题
- JAVA设计模式---单例模式的几种实现方式比较
- ElasticSearch全文搜索引擎之Windows集群搭建
- 【Hoxton.SR1版本】Spring Cloud Gateway之Predicate详解
- 多线程之生产者与消费者问题
- Java网络编程之URL、URLConnection、URLEncoder、URLDecoder
- FusionCharts破解方法
- kafka connect分布式安装
- Struts数据传输问题-- 数据超出2M时会导致映射数据丢失