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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 如何设计自己创作的框架日志系统

正文


日志系统是框架设计的重要的一个环节,同时也是,监督以及查看我们设计框架是否存在异常、自己写的代码是否有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日志并进行多维度分析。
目录
打赏
0
0
0
0
4
分享
相关文章
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
1113 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
401 69
Grafana Loki,轻量级日志系统
|
5月前
|
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
524 3
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
94 8
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
128 2
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
393 2
|
5月前
|
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
216 1
|
5月前
|
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
113 1
Linux系统日志管理
Linux系统日志管理
101 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等