切换日志框架|学习笔记

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

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

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


切换日志框架

现在默认 springboot 是 slf4j +logback 方式,如果用 slf4j+logf4j 的方式,这个切换是有没意义的,因为 logf4j 本来就是因为作者觉得写的不好写了一个 logback 和 sjf4J 进行适配,那么该怎么切换成 logf4 j 呢?

根据日志关系图进行切换,假设现在想用 logf4j,那么首先要面向 slf4j 编程,中间得有一个适配包,那么需要先把其他的日志包都干掉,所以在 pom.xml 中分析依赖数:

第一件事实在依赖图中将 logback 删除。

第二件事日志关系图中其他的转成 slf4j,所以要将 log4j-over-slf4

删除,因为它是一个替换包。所以就变成了:

image.png

把其他的框架 jcl 和 jul 转化成 slf4j。

虽然面向 slf4j 编程,但是要用 logf4j 实现,那么就需要导入中间的一个适配层:

在 pom.xml 文件里导入:

org.slf4j

slf4j-log4j12/artifactId>

版本不用自己写,并且导入它的好处是在依赖图中找到 slf4j-log4j12 可以看到自动生成一个 log4j ,因为适配层的包本身就依赖 log4j 

现在就相当于导入了适配层的包, slf4j 在系统中,其他的也替换完成,那么就可以使用 log4j 了。

运行看一下效果:

在控制台中显示

二月01,2018 5:07:14 下午

org.apache.catalina.core.StandardService startInternal

信息: Starting service [ Tomcat]

二月01,2018 5:07:14 下午

org.apache.catalina.core.StandardEngine startInternal

信息:Starting Servlet Engine: Apache Tomcat/8.5.27

二月01,2018 5:07:14 下午

org.apache.catalina.core.ApplicationContext log

信息:Initializing Spring embedded webApplicationContext

输出不像以前那么多日志了,因为已经切换到log4j了,而log4j没有配置文件。

新创建一个文件将log4j配置文件复制进去。

Log4j配置文件是被log4j框架识别的,执行启动起来可以看到记录都是log4j记录着。

比如:

###输出到控制台###

1og4j.appender.stdout = org.apache.log4j.consoleAppender

log4j.appender.stdout.Target = System.out

1g4j.appender.stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.stdout.1layout.ConversionPattern = %d{ABSOLUTE}

=== %5p %c{1}:%L-%m%n 

启动发现已经切换了,不过这个切换时没有意义的,只是做一个演示。因为 log4j 设计不好,用 logback 替换。

切换日志框架:

可以按照 slf4j 的日志适配图,进行相关的切换;

Slf4j+log4j 的方式:(按照关系图进行导入和删除)

<dependency>

<groupId>org.springframework . boot</groupId>

<artifactId>spring-boot-starter-web</ artifactId><exclusions>

<exclusion>

<artfactId>logback-classic</artifactId>

<groupId>ch.qos.logback</ groupId>

</exclusion>

<exclusion>

<artifactId>log4j-over-slf4j</artifactId>

<groupId>org.slf4j</groupId>

</exclusion>

</exclusions>

< / dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

</dependency>

但是不推荐这样做只使用这种方式将原理掌握更深一点。

这样就用到 log4j2 了,分析这个依赖:

image.png

里面有 jcl、jul 将其他框架转成 slf4j,新添了 log4j-core 版本2.7和中间的适配包,这样就切换到  了 l og4j2,可以直接运行测试一下。

运行发现打印还是默认配置,在 spring boot 里面默认支持 log4j2,log4j2 的配置文件是 log4j2.xml 和 log4j2-file.xml,也可以按照之前一样制定自己的 log4j2 配置文件最好加上 spring。

切换为 log4j2:(将之前的删除就可以了)

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</ artifactId>

<exclusions>

<exclusion>

<artifactId>spring-boot-starter-logging

</ artifactId><groupId>org.springframework .boot</groupId>

</exclusion>

</exclusions>

</ dependency>

<dependency>

<groupId>org.springframework .boot</groupId>

<artifactId>spring-boot-starter-log4j2</ artifactId>

< / dependency>

相关实践学习
日志服务之使用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简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
226 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
281 3
|
2月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
117 1
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
49 2
|
2月前
|
SQL XML 监控
SpringBoot框架日志详解
本文详细介绍了日志系统的重要性及其在不同环境下的配置方法。日志用于记录系统运行时的问题,确保服务的可靠性。文章解释了各种日志级别(如 info、warn、error 等)的作用,并介绍了常用的日志框架如 SLF4J 和 Logback。此外,还说明了如何在 SpringBoot 中配置日志输出路径及日志级别,包括控制台输出与文件输出的具体设置方法。通过这些配置,开发者能够更好地管理和调试应用程序。
|
3月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
3月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
279 1
|
4月前
|
XML Java Maven
Spring5入门到实战------16、Spring5新功能 --整合日志框架(Log4j2)
这篇文章是Spring5框架的入门到实战教程,介绍了Spring5的新功能——整合日志框架Log4j2,包括Spring5对日志框架的通用封装、如何在项目中引入Log4j2、编写Log4j2的XML配置文件,并通过测试类展示了如何使用Log4j2进行日志记录。
Spring5入门到实战------16、Spring5新功能 --整合日志框架(Log4j2)
|
4月前
|
Java 数据库连接 数据库
后端框架的学习----mybatis框架(6、日志)
这篇文章介绍了如何在MyBatis框架中使用日志功能,包括配置MyBatis的日志实现、使用log4j作为日志工具,以及如何通过配置文件控制日志级别和输出格式。
|
4月前
|
存储 缓存 监控
【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现
综上所述,构建一个基于FATFS/Littlefs文件系统的日志框架需要对文件系统的操作有深入理解,并以此为基础设计一套完整的日志处理机制。这样的框架不仅能够确保日志数据的完整性和系统的鲁棒性,同时还能够满足嵌入式系统对于性能和资源使用的严格要求。
160 4