日志框架分类和选择|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习日志框架分类和选择

开发者学堂课程【SpringBoot快速掌握 - 核心技术日志框架分类和选择】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/612/detail/9233


日志框架分类和选择

首先先通过一个小故事讲解一下日志的起源和日志框架的关系:

现在假设有一个开发人员 小张,小张每天晚上加班,在开发一个大型系统,由于这个系统有点大,每次为了调试方便都喜欢:

1、System.out.println(“”);将关键数据打印在控制台。

有一天项目开发完毕后,老板说小张代码里System.out.println(“”)是不是有点太多了,将它删除吧,那么小张一行一行的注释掉了,小张刚注释完,老板又说输出的还不错,能通过控制台输出了解项目运行状况将它写在一个文件里也方便以后监控一下所以:

2、用框架来记录系统的一些运行时信息;日志框架就出来了小张命名为zhanglogging.jar

随着时代的进步,小张觉得这个日志框架功能有点简陋,突然想出了一些高大上的功能:

3、想在日志输出的时候过滤启用异步模式、自动归档等等,命名为zhanglogging-good.jar

小张面临的问题又来了,他写了一个新的日志框架里面的一些设计可能跟以前的不一样所以:

4、将以前框架卸下,换上新的框架,重新修改之前相关的APIzhanglogging-prefect.jar

每次都要做这个修改API有点麻烦,小张突然想到了一种模式:

5、JDBC-数据库驱动

现在写数据库都面向接口编程,只需要把数据库的实现放进去就行了这就是数据库的驱动,小张的日志框架为什么不这么设计呢?

所以小张为所有日志框架写了一个统一的接口层:日志门面(日志的一个抽象层);logging-abstract.jar

以后进行编码的时候只面向logging-abstract.jar进行编程,而需要用到zhanglogging-good.jar还是zhanglogging-prefect.jar只需要给项目中导入具体的日志实现就行了;

面向统一接口层进行开发,用什么就用日志实现就行了。

之前的日志框架都是实现的抽象层。

市面上的日志框架:

JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....等等

这么多常用框架要用哪些?怎么用呢?首先来看一下它们的关系:

日志门面

日志实现

JCL ( Jakarta Commons Logging )

SLF4j ( Simple Logging Facade for Java )

jboss-logging

Log4j

JUL( java.util.logging )Log4j2

logback

SpringBoot: 底层是 Spring 框架,Spring 框架默认是用 CL ;

SpringBoot 对它们进行包装,选用 SLF4J 和 logback;

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
225 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
281 3
|
2月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
466 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
2月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
117 1
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
49 2
|
2月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
247 0
|
4月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
2月前
|
SQL XML 监控
SpringBoot框架日志详解
本文详细介绍了日志系统的重要性及其在不同环境下的配置方法。日志用于记录系统运行时的问题,确保服务的可靠性。文章解释了各种日志级别(如 info、warn、error 等)的作用,并介绍了常用的日志框架如 SLF4J 和 Logback。此外,还说明了如何在 SpringBoot 中配置日志输出路径及日志级别,包括控制台输出与文件输出的具体设置方法。通过这些配置,开发者能够更好地管理和调试应用程序。
|
3月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
3月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
278 1