如何设计自己创作的框架日志系统

简介: 如何设计自己创作的框架日志系统

正文


日志系统是框架设计的重要的一个环节,同时也是,监督以及查看我们设计框架是否存在异常、自己写的代码是否有bug的重要工具。今天,根据我的理解,设计一款属于自己的日志系统,应用于自己设计的框架中。

任何的需求都是源自现实问题的需要。我们今天设计的系统,主要的目的是,设计实现日志系统并可插拔式的实现日志系统


44.png

看上面的图片,在我原来写的框架的基础上增加了日志系统模块,用来解决框架的日志系统与我们原来项目日志输出相互兼容问题。


显然,根据上面图片里面的设计,我设计了adaptor这个包,里面的含义是我们日志的输出的装饰类,可以根据自己的项目系统,任意的切换日志输出,例如:sl4j等日志工具。


46.png

在Logger这个接口的设计的过程中,我增加了一系列的日志输出的方法,根据等级进行了划分。

在第一个日志的实现类里面,实际上使用的是Java自己的输出方式输出到控制台,这个时候,日志输出的格式是可以控制的。


57.png

如果不想使用Java的日志输出,我们还是可以配置使用项目里面的输出工具,也即是DelegateLoggerImpl 实现,采用了组合设计方式,真正的实现是在我们设计的如下对象中:


47.png

这时候,疑问就出现了,我们不知道,这个对象是什么,如何有效的日志输出呢?

这个时候,l利用Java的反射了,但是,每一次利用反射的方式获取对象的方法,势必会降低系统的性能,我们可以在项目启动的时候,就保存已有的方法,这样就好啦。如下面的设计:


48.png

这样,我们的日志输出就简单啦!


49.png

但是,如何获取到上面的delegate呢?

这就是WebLogFactory的问题啦,我在设计这个工厂类的时候,采用了下面设计方式:


50.png

上面也是利用反射的方式,获取Logger对象。好至此,设计都完毕了,我们测试一下!

51.png

使用自定义注解,测试如下:


52.png


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
存储 Java 数据库
若依框架----源码分析(@Log)
若依框架----源码分析(@Log)
311 0
|
5月前
|
Java API 开发者
Java日志框架整理
Java日志框架整理
62 0
|
7月前
|
SQL 监控 前端开发
tp5框架Fastadmin中的Log日志如何去用
tp5框架Fastadmin中的Log日志如何去用
219 0
|
6月前
|
XML JSON Java
最牛逼 Java 日志框架—Log4j2,性能无敌,横扫对手
Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。
|
5月前
|
前端开发 Java
日志框架:基于Logback实现链路追踪
日志框架:基于Logback实现链路追踪
|
2天前
|
设计模式 数据采集 监控
Spring日志框架
Spring日志框架
6 0
|
10天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。
|
1月前
|
Java 测试技术 Spring
Spring系列文章:Spring集成Log4j2⽇志框架、整合JUnit
Spring系列文章:Spring集成Log4j2⽇志框架、整合JUnit
|
1月前
|
XML Java 数据库连接
Springboot中使用日志框架
Springboot中使用日志框架
|
2月前
|
监控 Java 测试技术
日志框架到底是Logback 还是 Log4j2
日志框架到底是Logback 还是 Log4j2
21 0