CN110399107A - 日志打印方法、装置、存储介质及设备 - Google Patents
日志打印方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN110399107A CN110399107A CN201910671531.6A CN201910671531A CN110399107A CN 110399107 A CN110399107 A CN 110399107A CN 201910671531 A CN201910671531 A CN 201910671531A CN 110399107 A CN110399107 A CN 110399107A
- Authority
- CN
- China
- Prior art keywords
- log
- default
- journaling
- configuration
- context object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了日志打印方法、装置、存储介质及设备。该方法包括:在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,根据预设日志配置在本地线程中创建目标日志上下文对象,其中,目标日志上下文对象中包含与预设日志配置相对应的日志列表属性,将获取到的调用入口组件对应的日志信息以及通过预设日志接口获取到的日志信息,依据日志列表属性添加至目标日志上下文对象中,在检测到针对目标应用程序的调用过程完毕时,通过调用入口组件使用预设日志输出接口打印目标日志上下文对象中包含的日志信息,以生成日志文件。本发明实施例能够更加直观地查看应用程序的执行链路,并节省存储空间。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及日志打印方法、装置、存储介质及设备。
背景技术
应用程序的日志可以记录应用程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。日志的作用包括在测试或生产环境没有Debug调试工具时,作为开发或测试人员定位问题的重要手段。日志打印得合理,就能根据日志的轨迹快速定位并解决线上问题,反之,日志打印得不好,不仅不能定位到问题,还可能会影响***的性能。
目前,在打印日志时普遍采用的方法是依赖于slf4j等应用程序编程接口(Application Programming Interface,API)进行日志打印,但日志文件中日志打印得很分散,不能直观地看出应用程序的执行链路,且过多的冗余日志信息会造成存储空间被过多占用,因此,目前的日志打印方案需要改进。
发明内容
本发明实施例提供了日志打印方法、装置、存储介质及设备,可以优化现有的日志打印方案。
第一方面,本发明实施例提供了一种日志打印方法,包括:
在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,其中,所述调用入口组件包括多个预设日志代理中的一个;
根据所述预设日志配置在本地线程中创建目标日志上下文对象,其中,所述目标日志上下文对象中包含与所述预设日志配置相对应的日志列表属性;
将获取到的所述调用入口组件对应的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
在检测到针对所述目标应用程序的调用过程完毕时,通过所述调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。
第二方面,本发明实施例提供了一种日志打印装置,包括:
日志配置获取模块,用于在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,其中,所述调用入口组件包括多个预设日志代理中的一个;
对象创建模块,用于根据所述预设日志配置在本地线程中创建目标日志上下文对象,其中,所述目标日志上下文对象中包含与所述预设日志配置相对应的日志列表属性;
第一日志信息添加模块,用于将获取到的所述调用入口组件对应的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
第二日志信息添加模块,用于在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
日志打印模块,用于在检测到针对所述目标应用程序的调用过程完毕时,通过所述调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的日志打印方法。
第四方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的日志打印方法。
本发明实施例中提供的日志打印方案,在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,根据预设日志配置在本地线程中创建目标日志上下文对象,其中,目标日志上下文对象中包含与预设日志配置相对应的日志列表属性,将获取到的调用入口组件对应的日志信息依据日志列表属性添加至所述目标日志上下文对象中,在检测到目标应用程序调用预设日志接口时,将通过预设日志接口获取到的日志信息依据日志列表属性添加至目标日志上下文对象中,在检测到针对目标应用程序的调用过程完毕时,通过调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。通过采用上述技术方案,可以实现面向调用的日志打印,并依据预设日志配置进行有针对性的日志信息获取,通过本地线程将调用过程对应的日志信息串联起来,从而能够更加直观地查看应用程序的执行链路,并节省存储空间。
附图说明
图1为本发明实施例一提供的一种日志打印方法的流程示意图;
图2为本发明实施例二提供的一种日志打印方法的流程示意图;
图3为本发明实施例二提供的一种日志打印方案架构示意图;
图4为本发明实施例三提供的一种日志打印装置的结构框图;
图5为本发明实施例五提供的一种计算机设备的结构框图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的一种日志打印方法的流程示意图,该方法可以由日志打印装置执行,其中该装置可由软件和/或硬件实现,一般可集成在计算机设备中。如图1所示,该方法包括:
步骤101、在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,其中,所述调用入口组件包括多个预设日志代理中的一个。
示例性的,先对本发明实施例提供的日志打印方法所依赖的应用内日志框架做简单说明。本发明实施例的技术方案中,该日志框架中包含多个预设日志代理以及多个预设日志接口。
其中,预设日志代理可包括Dubbo日志代理(Dubbo log proxy)、MQ日志代理(MQlog proxy)、Mybatis日志代理(Mybatis log proxy)和Redis日志代理(Redis logproxy),所述调用入口组件包括Dubbo日志代理和/或MQ日志代理。Dubbo是一个开源的高性能且轻量级的Java远程过程调用(Remote Procedure Call,RPC)框架,提供了面向接口的远程方法调用、智能容错和负载均衡、以及服务自动注册和发现的能力。消息队列(MessageQueue,MQ)也是一种RPC组件。Mybatis是一款优秀的持久层框架,它支持定制化结构化查询语言(Structured Query Language,SQL)、存储过程以及高级映射。Redis是一个开源的支持网络、可基于内存亦可持久化的日志型、键-值(Key-Value)数据库,并提供多种语言的API。上述每一个预设日志代理都可以认为是一种对接一个应用组件的日志组件。上述四种预设日志代理仅作为示意性说明,也可以包括其他类型的日志代理,本申请实施例不做限定。本发明实施例中的调用入口组件可以是Dubbo日志代理和/或MQ日志代理。
其中,预设日志接口是本发明实施例自定义的接口,可记为logapi,简称lapi。相关技术中,logger.debug或logger.info是调用标准日志输出接口,而本发明实施例中,可以将应用程序原来调用logger.debug或logger.info的地方都替换为本发明实施例中的lapi。lapi类似log4j这种日志输出实现,lapi是自定义的实现了并拓展了slf4j接口的日志api,可以拓展slf4j没有的功能,如动态设置日志调用链list的最大值等。
示例性的,以调用入口组件为Dubbo log proxy为例,针对目标应用程序的调用请求可以由Dubbo的调用方(如Dubbo client)发起,目标应用程序的Dubbo log proxy可以以Dubbo***的形式拦截该调用请求,从而检测到针对目标应用程序的调用请求。若调用入口组件为MQ log proxy,也可以在MQ消息监听方法上设置***,每次MQ消息证实进入消息消费方法钱,先进入执行MQ代理的方法,进而检测到针对目标应用程序的调用请求。
示例性的,预设日志配置中包括以下至少一项:目标调用设备、目标调用应用、目标调用类、目标调用方法、语句执行信息、入参、出参、耗时以及打印格式。这样,通过预设日志配置可以实现有选择性的、有针对性的打印日志。预设日志配置可以存储在本地,也可以存储在其他设备中。示例性的,预设日志配置可存储于配置中心(configer center)中。可选的,所述获取对应的预设日志配置,包括:从预设配置中心中获取对应的预设日志配置。这样设置的好处在于,可以便于管理预设日志配置。
进一步的,所述预设日志代理和/或预设日志接口中包含有预设的配置信息,在所述预设配置中心中实现根据所述预设的配置信息动态配置相应的预设日志配置。这样设置的好处在于,可以在线设置预设日志配置,实时生效,提高日志打印的灵活性。可选的,可以由配置中心中间件实现根据所述预设的配置信息动态配置相应的预设日志配置,以zookeeper为例,可以在zookeeper上配置信息,通过分布式一致性协议同步到各个应用节点上,如此做到在线配置实时同步。
步骤102、根据所述预设日志配置在本地线程中创建目标日志上下文对象,其中,目标日志上下文对象中包含与所述预设日志配置相对应的日志列表属性。
示例性的,本地线程(threadlocal)是一个本地线程副本变量工具类,可以在threadlocal中保存一个个对象,如日志上下文对象(logContext),对象中有日志列表的属性,对象创建时对日志列表的list数据结构进行初始化,也即根据预设日志配置在本地线程中创建目标日志上下文对象,在目标日志上下文对象中包含与预设日志配置相对应的日志列表属性。
步骤103、将获取到的所述调用入口组件对应的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中。
示例性的,这里的日志信息可包含应用程序名称、被调用类全路径以及调用方法名等等。日志列表属性与预设日志配置相对应,因此可以做到按照预设日志配置将获取到的日志信息添加到目标日志上下文对象中。
步骤104、在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中。
示例性的,在检测到目标用用程序调用预设日志接口打印日志时,同样将获取到的日志信息依据日志列表属性添加至目标日志上下文对象中,从而实现将所需日志信息在本地线程中进行汇总,便于后续的统一输出。
步骤105、在检测到针对所述目标应用程序的调用过程完毕时,通过所述调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。
示例性的,在针对目标应用程序的整个调用过程结束时,调用线程回到调用入口组件中,可以将结束调用时相关日志信息同样依据日志列表属性添加至目标日志上下文对象中,这样,threadlocal中就包含了整个调用链的日志信息,通过调用入口组件使用预设日志输出接口打印目标日志上下文对象中包含的日志信息,便可以生成日志文件。其中,预设日志输出接口可以是slf4j的log4j,从而实现api向日志***输出日志。
本发明实施例中提供的日志打印方法,在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,根据预设日志配置在本地线程中创建目标日志上下文对象,其中,目标日志上下文对象中包含与预设日志配置相对应的日志列表属性,将获取到的调用入口组件对应的日志信息依据日志列表属性添加至所述目标日志上下文对象中,在检测到目标应用程序调用预设日志接口时,将通过预设日志接口获取到的日志信息依据日志列表属性添加至目标日志上下文对象中,在检测到针对目标应用程序的调用过程完毕时,通过调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。通过采用上述技术方案,可以实现面向调用的日志打印,并依据预设日志配置进行有针对性的日志信息获取,通过本地线程将调用过程对应的日志信息串联起来,从而能够更加直观地查看应用程序的执行链路,并节省存储空间。
实施例二
图2为本发明实施例二提供的一种日志打印方法的流程示意图,本发明实施例在上述实施例基础上进行优化,增加了目标应用程序调用预设日志代理时的日志信息处理相关内容。
示例性的,在所述根据所述预设日志配置在本地线程中创建目标日志上下文对象之后,还包括:在检测到所述目标应用程序调用所述多个预设日志代理中的目标日志代理时,将从所述目标日志代理处获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中。这样设置的好处在于,能够更加全面地获取日志信息,将完整调用链日志信息打印到日志文件中。
进一步的,所述根据所述预设日志配置在本地线程中创建目标日志上下文对象,包括:在本地线程中创建日志上下文对象,根据所述预设日志配置中包含的日志输出模板对所创建的日志上下文对象中的日志列表的列表数据结构进行初始化,得到目标日志上下文对象。这样设置的好处在于,通过设置日志输出模板,能够更加方便地实现个性化设置日志文件内容,可面向业务对日志输出模板进行可配置化设置。
具体的,如图2所示,该方法可包括如下步骤:
步骤201、在通过调用入口组件检测到针对目标应用程序的调用请求时,从预设配置中心中获取对应的预设日志配置。
图3为本发明实施例二提供的一种日志打印方案架构示意图,如图3所示,该架构中的核心部件是各种日志代理(log proxy)以及预设日志接口(lapi),由本地线程(threadlocal)将各proxy及lapi的调用信息(如入参、出参、耗时以及自定义日志等)串联起来。预设日志代理包括Dubbo日志代理、MQ日志代理、Mybatis日志代理和Redis日志代理,其中Dubbo日志代理和MQ日志代理可作为调用入口组件。图3中示出了4个预设日志接口(lapi)。配置中心(configer center)用于保存预设日志配置及日志输出模板,可以根据预设日志代理或预设日志接口中包含的预设的配置信息,在所述预设配置中心中实现根据所述预设的配置信息动态配置相应的预设日志配置。
示例性的,所述预设日志配置中包括以下至少一项:目标调用设备、目标调用应用、目标调用类、目标调用方法、语句执行信息、入参、出参、耗时以及打印格式。示例性的,Dubbo日志代理和MQ日志代理可以共享一个配置,也可针对Dubbo和MQ分表设置个性化的配置,如入口日志配置mylog.application.entry.model可以共享一个,个性化的日志配置比如MQ的消息主题(topic)信息是否要输出,Dubbo调用方的信息是否要输出等配置。
此外,还可以有其他个性化配置。可包括但不限于如下设置,可以配置关闭所有日志打印,只打印某个包或某个类的日志,打印info或debug日志,是否输出完整sql语句,是否输出某个log proxy的入参或出差等等。例如,想要屏蔽所有其他业务日志,只打印某台机器,某个应用某个类,某个方法的日志,可以在配置中做如下设置:mylog.application.logswitch=off,设置所应用业务日志输出开关为关闭,不配置默认为on打开;mylog.application.logswitch.method.whitelist=com.fenqile.postloan.asset.mqConsum erImpl.consumer,设置日志打印白名单为postloan.asset应用的com.fenqile.postloan.asset.mqConsumerImpl实现类的consumer方法,不配置默认不过滤;mylog.application.logswitch.ip.whitelist=10.79.10.6,设置打印日志的机器ip为10.79.10.6,不配置默认不过滤。通过预设日志代理中的方法可以获取被调用方法的方法名全路径和入参,通过java的api可以获取到本机ip地址信息,预设日志代理中根据配置信息对上述信息进行过滤即可实现。
步骤202、在本地线程中创建日志上下文对象,根据预设日志配置中包含的日志输出模板对所创建的日志上下文对象中的日志列表的列表数据结构进行初始化,得到目标日志上下文对象。
其中,所述目标日志上下文对象中包含与所述预设日志配置相对应的日志列表属性。例如,日志列表的列表数据结构与日志输出模板相对应。示例性的,日志输出模板具体可以为如下形式mylog.application.entry.model=%methodName%,params:[%params%],标识日志的第一行输出方法名,逗号,params后面的[]中是入参。可选的,可以将日志输出模板配置在配置中心以mylog.app.model为key的属性值中,值类型标准如properties文件的定义标准key=value。
步骤203、将获取到的所述调用入口组件对应的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中。
示例性的,将获取到的所述调用入口组件对应的日志信息通过调用列表(list)的添加(add)方法根据所述日志列表属性对日志信息对应的字符串进行组装,并添加至所述目标日志上下文对象中。具体的,可以依据日志列表属性组装入口日志输出的字符串并保存在threadlocal的logContext对象中String类型的list中,具体可以调用list的add方法。
步骤204、在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中。
示例性的,在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息通过调用列表(list)的添加(add)方法根据所述日志列表属性对日志信息对应的字符串进行组装,并添加至所述目标日志上下文对象中。具体的,可以将日志字符串保存在threadlocal的logContext对象中String类型的list中,具体可以调用list的add方法。
步骤205、在检测到所述目标应用程序调用所述多个预设日志代理中的目标日志代理时,将从所述目标日志代理处获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中。
示例性的,在检测到所述目标应用程序调用所述多个预设日志代理中的目标日志代理时,将从所述目标日志代理处获取到的日志信息通过调用列表(list)的添加(add)方法根据所述日志列表属性对日志信息对应的字符串进行组装,并添加至所述目标日志上下文对象中。以目标日志代理为Redis为例,如果目标应用程序调用到Redis,可以在Redislog proxy中通过***实现通过logContext中的日志配置输出相应的日志字符串(如调用方法、入参及出参等)并保存在threadlocal的logContext对象中String类型的list中,具体可以调用list的add方法。Mybatis与Redis类似,此处不再赘述。
步骤206、在检测到针对所述目标应用程序的调用过程完毕时,通过所述调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。
示例性的,最终方法调用完毕,调用线程又会返回Dubbo proxy中,根据logContext中的日志配置输出相应结果日志字符串并保存在threadlocal的logContext对象中String类型的list中,最终调用slf4j的log4j实现api向日志***输出日志。
示例性的,本发明实施例的技术方案中,按照自定义应用日志输出的日志中包含了入口信息,可以快速锁定具体哪个调用,并一眼看到该调用链路上的所有信息。例如,com.fenqile.postloan.asset.mqConsumerImpl.consumer这个方法名全路径包含了很多信息,调用的应用是postloan.asset,实现类是mqConsumerImpl,方法是consumer,如果模板中设置需要打印ip,通过日志输出还能看出是哪台机器。另外,通过对入参进行过滤,还能定位到订单号或其他属性,进而可以支持按业务订单过滤,只打印符合匹配条件的订单对应调用链路的所有或部分信息,而不必发版或重启机器。
本发明实施例提供的日志打印方法,可以实现面向调用的日志打印,可以实时自定义日志输出,可以面向业务制定可配置化日志模板,利用本地线程将各预设日志代理和预设日志接口的调用信息串联起来,在最终所打印的日志中体现调用过程的完整链路,解决了日志输出过程中日志太大以及可读性差的问题。经试验证明采用本发明实施例提供的技术方案,在资产管理类***中可以很好地支持生产吞吐量(Transactions Per Second,TPS)达到1500以上级别,在定位问题方面,过去需要花费1至2小时完成的问题定位,通过采用本发明实施例的技术方案可以缩减到2至5分钟。另外,可支持在线配置,实时生效,日志打印的灵活性很高,适应性强。
实施例三
图4为本发明实施例三提供的一种日志打印装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在计算机设备中,可通过执行日志打印方法来进行日志打印。如图4所示,该装置包括:
日志配置获取模块401,用于在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,其中,所述调用入口组件包括多个预设日志代理中的一个;
对象创建模块402,用于根据所述预设日志配置在本地线程中创建目标日志上下文对象,其中,所述目标日志上下文对象中包含与所述预设日志配置相对应的日志列表属性;
第一日志信息添加模块403,用于将获取到的所述调用入口组件对应的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
第二日志信息添加模块404,用于在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
日志打印模块405,用于在检测到针对所述目标应用程序的调用过程完毕时,通过所述调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。
本发明实施例中提供的日志打印装置,在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,根据预设日志配置在本地线程中创建目标日志上下文对象,其中,目标日志上下文对象中包含与预设日志配置相对应的日志列表属性,将获取到的调用入口组件对应的日志信息依据日志列表属性添加至所述目标日志上下文对象中,在检测到目标应用程序调用预设日志接口时,将通过预设日志接口获取到的日志信息依据日志列表属性添加至目标日志上下文对象中,在检测到针对目标应用程序的调用过程完毕时,通过调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。通过采用上述技术方案,可以实现面向调用的日志打印,并依据预设日志配置进行有针对性的日志信息获取,通过本地线程将调用过程对应的日志信息串联起来,从而能够更加直观地查看应用程序的执行链路,并节省存储空间。
可选的,该装置还可包括:
第三日志信息添加模块,用于在所述根据所述预设日志配置在本地线程中创建目标日志上下文对象之后,在检测到所述目标应用程序调用所述多个预设日志代理中的目标日志代理时,将从所述目标日志代理处获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中。
可选的,所述根据所述预设日志配置在本地线程中创建目标日志上下文对象,包括:
在本地线程中创建日志上下文对象,根据所述预设日志配置中包含的日志输出模板对所创建的日志上下文对象中的日志列表的列表数据结构进行初始化,得到目标日志上下文对象。
可选的,将日志信息依据所述日志列表属性添加至所述目标日志上下文对象中,包括:
通过调用列表的添加方法根据所述日志列表属性对日志信息对应的字符串进行组装,并添加至所述目标日志上下文对象中。
可选的,所述预设日志配置中包括以下至少一项:
目标调用设备、目标调用应用、目标调用类、目标调用方法、语句执行信息、入参、出参、耗时以及打印格式。
可选的,所述获取对应的预设日志配置,包括:
从预设配置中心中获取对应的预设日志配置,其中,所述预设日志代理和/或预设日志接口中包含有预设的配置信息,在所述预设配置中心中实现根据所述预设的配置信息动态配置相应的预设日志配置。
可选的,所述预设日志代理包括Dubbo日志代理、消息队列MQ日志代理、Mybatis日志代理和Redis日志代理,所述调用入口组件包括Dubbo日志代理或MQ日志代理。
实施例四
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行日志打印方法,该方法包括:
在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,其中,所述调用入口组件包括多个预设日志代理中的一个;
根据所述预设日志配置在本地线程中创建目标日志上下文对象,其中,所述目标日志上下文对象中包含与所述预设日志配置相对应的日志列表属性;
将获取到的所述调用入口组件对应的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
在检测到针对所述目标应用程序的调用过程完毕时,通过所述调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机***存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机***中,或者可以位于不同的第二计算机***中,第二计算机***通过网络(诸如因特网)连接到第一计算机***。第二计算机***可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机***中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的日志打印操作,还可以执行本发明任意实施例所提供的日志打印方法中的相关操作。
实施例五
本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的日志打印装置。图5为本发明实施例五提供的一种计算机设备的结构框图。计算机设备500可以包括:存储器501,处理器502及存储在存储器501上并可在处理器运行的计算机程序,所述处理器502执行所述计算机程序时实现如本发明实施例所述的日志打印方法。
本发明实施例提供的计算机设备,可以实现面向调用的日志打印,并依据预设日志配置进行有针对性的日志信息获取,通过本地线程将调用过程对应的日志信息串联起来,从而能够更加直观地查看应用程序的执行链路,并节省存储空间。
上述实施例中提供的日志打印装置、存储介质以及计算机设备可执行本发明任意实施例所提供的日志打印方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的日志打印方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种日志打印方法,其特征在于,包括:
在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,其中,所述调用入口组件包括多个预设日志代理中的一个;
根据所述预设日志配置在本地线程中创建目标日志上下文对象,其中,所述目标日志上下文对象中包含与所述预设日志配置相对应的日志列表属性;
将获取到的所述调用入口组件对应的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
在检测到针对所述目标应用程序的调用过程完毕时,通过所述调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述预设日志配置在本地线程中创建目标日志上下文对象之后,还包括:
在检测到所述目标应用程序调用所述多个预设日志代理中的目标日志代理时,将从所述目标日志代理处获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述预设日志配置在本地线程中创建目标日志上下文对象,包括:
在本地线程中创建日志上下文对象,根据所述预设日志配置中包含的日志输出模板对所创建的日志上下文对象中的日志列表的列表数据结构进行初始化,得到目标日志上下文对象。
4.根据权利要求1所述的方法,其特征在于,将日志信息依据所述日志列表属性添加至所述目标日志上下文对象中,包括:
通过调用列表的添加方法根据所述日志列表属性对日志信息对应的字符串进行组装,并添加至所述目标日志上下文对象中。
5.根据权利要求1所述的方法,其特征在于,所述预设日志配置中包括以下至少一项:
目标调用设备、目标调用应用、目标调用类、目标调用方法、语句执行信息、入参、出参、耗时以及打印格式。
6.根据权利要求1所述的方法,其特征在于,所述获取对应的预设日志配置,包括:
从预设配置中心中获取对应的预设日志配置,其中,所述预设日志代理和/或预设日志接口中包含有预设的配置信息,在所述预设配置中心中实现根据所述预设的配置信息动态配置相应的预设日志配置。
7.根据权利要求1-6任一所述的方法,其特征在于,所述预设日志代理包括Dubbo日志代理、消息队列MQ日志代理、Mybatis日志代理和Redis日志代理,所述调用入口组件包括Dubbo日志代理或MQ日志代理。
8.一种日志打印装置,其特征在于,包括:
日志配置获取模块,用于在通过调用入口组件检测到针对目标应用程序的调用请求时,获取对应的预设日志配置,其中,所述调用入口组件包括多个预设日志代理中的一个;
对象创建模块,用于根据所述预设日志配置在本地线程中创建目标日志上下文对象,其中,所述目标日志上下文对象中包含与所述预设日志配置相对应的日志列表属性;
第一日志信息添加模块,用于将获取到的所述调用入口组件对应的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
第二日志信息添加模块,用于在检测到所述目标应用程序调用预设日志接口时,将通过所述预设日志接口获取到的日志信息依据所述日志列表属性添加至所述目标日志上下文对象中;
日志打印模块,用于在检测到针对所述目标应用程序的调用过程完毕时,通过所述调用入口组件使用预设日志输出接口打印所述目标日志上下文对象中包含的日志信息,以生成日志文件。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一项所述的方法。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910671531.6A CN110399107B (zh) | 2019-07-24 | 2019-07-24 | 日志打印方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910671531.6A CN110399107B (zh) | 2019-07-24 | 2019-07-24 | 日志打印方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399107A true CN110399107A (zh) | 2019-11-01 |
CN110399107B CN110399107B (zh) | 2023-08-29 |
Family
ID=68325025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910671531.6A Active CN110399107B (zh) | 2019-07-24 | 2019-07-24 | 日志打印方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399107B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148699A (zh) * | 2020-09-28 | 2020-12-29 | 平安数字信息科技(深圳)有限公司 | 日志管理方法、装置、设备及介质 |
CN113268462A (zh) * | 2020-02-14 | 2021-08-17 | 西安诺瓦星云科技股份有限公司 | 基于嵌入式设备的日志管理方法、装置及*** |
CN113467980A (zh) * | 2020-03-30 | 2021-10-01 | 西安诺瓦星云科技股份有限公司 | 日志输出方法、装置及***和嵌入式设备 |
CN114398003A (zh) * | 2021-12-07 | 2022-04-26 | 广西北投信创科技投资集团有限公司 | 信息处理方法及装置消息服务器 |
CN114661256A (zh) * | 2022-05-20 | 2022-06-24 | 苏州万店掌网络科技有限公司 | 一种数据采集方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1785892A2 (en) * | 2005-11-01 | 2007-05-16 | Research In Motion Limited | System and Method for Collecting and Presenting Records in a Journal on an Electronic Device |
JP2012079230A (ja) * | 2010-10-05 | 2012-04-19 | Hitachi Ltd | 印刷管理システムおよび印刷管理方法 |
US20150100835A1 (en) * | 2013-10-09 | 2015-04-09 | Fujitsu Limited | Log output condition setting method and apparatus |
CN106250424A (zh) * | 2016-07-22 | 2016-12-21 | 杭州朗和科技有限公司 | 一种日志上下文内容的搜索方法、装置及*** |
CN108804644A (zh) * | 2018-06-05 | 2018-11-13 | 中国平安人寿保险股份有限公司 | 接口日志存储方法、装置、计算机设备和存储介质 |
CN109376074A (zh) * | 2018-09-14 | 2019-02-22 | 浙江口碑网络技术有限公司 | 获取日志的方法及装置、存储介质、电子装置 |
US20190171633A1 (en) * | 2017-11-13 | 2019-06-06 | Lendingclub Corporation | Multi-system operation audit log |
-
2019
- 2019-07-24 CN CN201910671531.6A patent/CN110399107B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1785892A2 (en) * | 2005-11-01 | 2007-05-16 | Research In Motion Limited | System and Method for Collecting and Presenting Records in a Journal on an Electronic Device |
JP2012079230A (ja) * | 2010-10-05 | 2012-04-19 | Hitachi Ltd | 印刷管理システムおよび印刷管理方法 |
US20150100835A1 (en) * | 2013-10-09 | 2015-04-09 | Fujitsu Limited | Log output condition setting method and apparatus |
CN106250424A (zh) * | 2016-07-22 | 2016-12-21 | 杭州朗和科技有限公司 | 一种日志上下文内容的搜索方法、装置及*** |
US20190171633A1 (en) * | 2017-11-13 | 2019-06-06 | Lendingclub Corporation | Multi-system operation audit log |
CN108804644A (zh) * | 2018-06-05 | 2018-11-13 | 中国平安人寿保险股份有限公司 | 接口日志存储方法、装置、计算机设备和存储介质 |
CN109376074A (zh) * | 2018-09-14 | 2019-02-22 | 浙江口碑网络技术有限公司 | 获取日志的方法及装置、存储介质、电子装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268462A (zh) * | 2020-02-14 | 2021-08-17 | 西安诺瓦星云科技股份有限公司 | 基于嵌入式设备的日志管理方法、装置及*** |
CN113268462B (zh) * | 2020-02-14 | 2024-05-10 | 西安诺瓦星云科技股份有限公司 | 基于嵌入式设备的日志管理方法、装置及*** |
CN113467980A (zh) * | 2020-03-30 | 2021-10-01 | 西安诺瓦星云科技股份有限公司 | 日志输出方法、装置及***和嵌入式设备 |
CN113467980B (zh) * | 2020-03-30 | 2024-06-04 | 西安诺瓦星云科技股份有限公司 | 日志输出方法、装置及***和嵌入式设备 |
CN112148699A (zh) * | 2020-09-28 | 2020-12-29 | 平安数字信息科技(深圳)有限公司 | 日志管理方法、装置、设备及介质 |
CN112148699B (zh) * | 2020-09-28 | 2023-09-05 | 深圳平安智汇企业信息管理有限公司 | 日志管理方法、装置、设备及介质 |
CN114398003A (zh) * | 2021-12-07 | 2022-04-26 | 广西北投信创科技投资集团有限公司 | 信息处理方法及装置消息服务器 |
CN114661256A (zh) * | 2022-05-20 | 2022-06-24 | 苏州万店掌网络科技有限公司 | 一种数据采集方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110399107B (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110399107A (zh) | 日志打印方法、装置、存储介质及设备 | |
CN111625452B (zh) | 流量回放方法和*** | |
US10129116B2 (en) | Techniques for capturing execution time data in dataflow graphs | |
CN104573115B (zh) | 支持多类型数据库操作的集成接口的实现方法及*** | |
US6922695B2 (en) | System and method for dynamically securing dynamic-multi-sourced persisted EJBS | |
US7000150B1 (en) | Platform for computer process monitoring | |
CN101189595B (zh) | 服务器群中的解决方案的部署 | |
US20030217308A1 (en) | Distributed test harness model | |
US20040133445A1 (en) | Generic framework for applying object-oriented models to multi-tiered enterprise applications | |
EP1236110B1 (en) | A method for isolating a fault from error messages | |
CN108762900A (zh) | 高频任务调度方法、***、计算机设备和存储介质 | |
WO2008018080A2 (en) | Smart integration engine and metadata-oriented architecture for automatic eii and business integration | |
US10354208B2 (en) | System and method for defining run books | |
CN110764980A (zh) | 日志处理方法和装置 | |
CN110399309B (zh) | 一种测试数据生成方法及装置 | |
CN112313627B (zh) | 事件到无服务器函数工作流实例的映射机制 | |
US7617462B2 (en) | Graphical user interface (GUI) for displaying software component availability as determined by a messaging infrastructure | |
CN107122203B (zh) | 一种配置文件的设置方法及装置 | |
US20060248536A1 (en) | Message system and method | |
US20050114836A1 (en) | Block box testing in multi-tier application environments | |
US7630988B2 (en) | Computer product and session management method | |
CN116627849B (zh) | ***测试方法、装置、设备及存储介质 | |
US20070299962A1 (en) | Application for testing the availability of software components | |
US7243137B2 (en) | Remote system controller and data center and methods for implementing the same | |
CN112817922B (zh) | 日志动态打印方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |