System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及软件系统设计,具体地说是一种分布式系统动态设置日志级别的方法。
技术介绍
1、日志在程序中扮演着重要的角色。它们可以帮助开发人员快速定位问题并解决它们,同时也可以帮助开发人员了解程序的运行情况,是否正常。通过查看日志,开发人员可以了解程序在何处出现问题,以及如何修复它们。此外,日志还可以用于追踪程序执行的过程、追踪数据的变化、数据统计和性能分析。
2、当前市场主流的开源日志框架,如log4j、logback等,提供了日志级别配置功能,开发人员在开发过程中指定日志输出级别并输出日志,由程序运行时根据配置的日志显示级别和开发人员指定的输出的日志级别判断日志最终能否输出至文件。
3、开源日志框架通过分级的方式很好的控制了日志输出的结果,通常在开发过程中,开发人员通过info级别输出调试的业务数据,在测试环境通过配置日志显示级别为info,可以在测试阶段黑盒环境下监测程序运行。然而在正式部署阶段的生产环境中,为避免日志输出带来的性能损耗,同时避免大量日志输出占用磁盘存储空间,通常将日志显示级别调整为warn,只监测程序运行过程中的异常信息。这样将导致在生产环境中如果出现故障,将无法捕获开发人员指定输出的业务数据,无法快速定位分析问题。
4、为解决上述问题,开源日志框架通常支持动态配置日志显示级别功能,在程序运行过程中,调整日志的显示级别,让指定级别的业务数据可以输出。但是显示级别控制的维度是全局或某个指定的类,即全部类或指定类中所有的日志方法都会输出,在分布式多节点环境和大并发情况下,依
技术实现思路
1、本专利技术的技术任务是针对以上不足之处,提供一种分布式系统动态设置日志级别的方法,能够建立业务方法执行流程日志输出调用链,实现在生产环境中捕获关键业务数据,快速定位分析问题。
2、本专利技术解决其技术问题所采用的技术方案是:
3、一种分布式系统动态设置日志级别的方法,该方法的实现包括:
4、软件系统创建数据库表;所述软件系统包括日志管理模块和日志服务执行器模块;
5、日志服务执行器模块与业务代码整合,提供统一日志输出方法,业务代码调用日志服务执行器中的日志输出方法输出日志;所述统一日志输出方法生成不重复的日志调用唯一标识序号,保存至线程变量中,用于记录并串联线程执行过程涉及的所有日志输出,生成方法执行调用链;
6、统一日志输出方法记录方法被调用者信息,日志服务执行器模块将统一日志输出方法记录的数据信息,上报至日志管理模块;日志管理模块接收日志服务执行器模块上报的数据,筛选去重后保存至数据库;
7、日志管理模块提供操作界面,支持查看日志输出调用调用链和日志输出方法,并支持设置对应调用链或调用方法的日志输出级别;日志管理模块调整日志级别后,通知日志服务执行器模块;日志服务执行器模块的统一日志输出方法根据调用链或调用方法设置的级别输出日志。
8、程序中的日志是记录程序运行过程中的各种信息的文件。日志的作用是记录系统的运行过程及异常信息,为快速定位系统运行中出现的问题及开发过程中的程序调试问题提供详细信息。
9、本方法通过调用注册机制,为所有调用统一日志输出的方法添加标识,通过标识识别方法调用链,精确配置某个方法或方法调用链的日志输出级别,从而捕获关键的业务数据,方便快速定位分析问题。
10、优选的,所述统一日志输出方法记录方法被调用者信息,包括全包名+类名+方法名信息。
11、优选的,日志输出方法调用链的生成过程如下:
12、统一日志输出方法被调用时,查看线程变量是否已存在日志标识序号;
13、如果不存在标识序号,生成标识序号放入线程变量;
14、后续当前线程继续调用统一日志输出方法将使用相同的日志标识序号,所有相同需要的调用日志方法,自动串接成为方法执行调用链。
15、优选的,日志管理模块筛选去重的过程如下:
16、提取同一个日志调用方法链上所有方法的名称;
17、查询单个方法在数据库中是否已存在,如果不存在就添加新记录;
18、查询整个方法链在数据库中是否已存在,如果不存在就添加新记录。
19、优选的,日志服务执行器模块的统一日志输出方法输出日志的过程如下:
20、统一日志输出方法被调用,获取方法的调用者信息;
21、判断方法调用者是否被动态设置了日志级别或属于动态设置日志级别的方法链;
22、如果满足调用链,则按照调用链设置的级别输出日志;如果不满足调用链,则按照对应单个方法设置的级别输出日志。
23、优选的,所述软件系统创建数据库表,用于记录日志输出调用者方法的信息和方法调用链信息;
24、调用者方法信息包括:调用方法包名、类名、方法名;
25、方法调用链信息包括:所属调用链标识、调用链中的顺序;
26、日志服务模块的统一日志输出方法每次被调用时执行注册,日志管理模块将收到的包名、类名、方法名和调用链标识等信息写入数据库表中。
27、优选的,所述软件系统包括日志管理模块和日志服务执行器模块,日志服务执行器与日志管理模块启动后,分别向注册中心执行注册,成为微服务的服务节点。
28、优选的,所述日志服务执行器模块与业务代码整合提供统一日志输出方法,采用装饰器设计模式封装统一日志输出方法,方法类持有开源日志框架对象引用,提供相同名称的日志输出方法,并增强其功能,增加方法注册和调用链判断。
29、本专利技术还要求保护一种分布式系统动态设置日志级别的装置,包括至少一个存储器和至少一个处理器;
30、所述至少一个存储器,用于存储机器可读程序;
31、所述至少一个处理器,用于调用所述机器可读程序,实现上述的分布式系统动态设置日志级别的方法。
32、本专利技术还要求保护一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的分布式系统动态设置日志级别的方法。
33、本专利技术的一种分布式系统动态设置日志级别的方法与现有技术相比,具有以下有益效果:
34、基于数据库和注册中心实现分布式系统动态设置日志级别的设计方案,通过注册机制生成日志调用方法和调用链,精确指定某个注册方法或调用链的日志输出级别,捕获业务数据,快速定位分析问题。
本文档来自技高网...【技术保护点】
1.一种分布式系统动态设置日志级别的方法,其特征在于,该方法的实现包括:
2.根据权利要求1所述的一种分布式系统动态设置日志级别的方法,其特征在于,所述统一日志输出方法记录方法被调用者信息,包括全包名+类名+方法名信息。
3.根据权利要求1所述的一种分布式系统动态设置日志级别的方法,其特征在于,日志输出方法调用链的生成过程如下:
4.根据权利要求1或3所述的一种分布式系统动态设置日志级别的方法,其特征在于,日志管理模块筛选去重的过程如下:
5.根据权利要求4所述的一种分布式系统动态设置日志级别的方法,其特征在于,日志服务执行器模块的统一日志输出方法输出日志的过程如下:
6.根据权利要求1所述的一种分布式系统动态设置日志级别的方法,其特征在于,所述软件系统创建数据库表,用于记录日志输出调用者方法的信息和方法调用链信息;
7.根据权利要求1所述的一种分布式系统动态设置日志级别的方法,其特征在于,所述软件系统包括日志管理模块和日志服务执行器模块,日志服务执行器与日志管理模块启动后,分别向注册中心执行注册,成为微服务
8.根据权利要求1或6或7所述的一种分布式系统动态设置日志级别的方法,其特征在于,所述日志服务执行器模块与业务代码整合提供统一日志输出方法,采用装饰器设计模式封装统一日志输出方法,方法类持有开源日志框架对象引用,提供相同名称的日志输出方法,并增强其功能,增加方法注册和调用链判断。
9.一种分布式系统动态设置日志级别的装置,其特征在于,包括至少一个存储器和至少一个处理器;
10.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至8任一所述的方法。
...【技术特征摘要】
1.一种分布式系统动态设置日志级别的方法,其特征在于,该方法的实现包括:
2.根据权利要求1所述的一种分布式系统动态设置日志级别的方法,其特征在于,所述统一日志输出方法记录方法被调用者信息,包括全包名+类名+方法名信息。
3.根据权利要求1所述的一种分布式系统动态设置日志级别的方法,其特征在于,日志输出方法调用链的生成过程如下:
4.根据权利要求1或3所述的一种分布式系统动态设置日志级别的方法,其特征在于,日志管理模块筛选去重的过程如下:
5.根据权利要求4所述的一种分布式系统动态设置日志级别的方法,其特征在于,日志服务执行器模块的统一日志输出方法输出日志的过程如下:
6.根据权利要求1所述的一种分布式系统动态设置日志级别的方法,其特征在于,所述软件系统创建数据库表,用于记录日志输出调用者方法的信息和方法调用链信息;...
【专利技术属性】
技术研发人员:丛锐,孟凡栋,王敏,张坤,杜浩,刘旭,韩昭瑞,谢恩鹏,
申请(专利权)人:山东浪潮超高清智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。