CN116483793A - 日志追踪方法、装置、电子设备及计算机可读存储介质 - Google Patents
日志追踪方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN116483793A CN116483793A CN202310425574.2A CN202310425574A CN116483793A CN 116483793 A CN116483793 A CN 116483793A CN 202310425574 A CN202310425574 A CN 202310425574A CN 116483793 A CN116483793 A CN 116483793A
- Authority
- CN
- China
- Prior art keywords
- request
- log
- user account
- account information
- link
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000001514 detection method Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims abstract description 10
- 238000007639 printing Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 21
- 238000011161 development Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009545 invasion Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种日志追踪方法、装置、电子设备及存储介质。该方法包括:响应于接收到操作请求,在应用上下文中生成与操作请求对应的全局临时变量,并获取与操作请求对应的用户登录标识;调用装饰器通过通用唯一识别码生成与操作请求对应链路的链路标识,并获取与用户登录标识对应的用户账号信息;将链路标识和用户账号信息保存于全局临时变量中,并在上下文中传递全局临时变量;响应于接收到收集请求,调用预设检测函数确定日志收集模块是否位于请求上下文中;若日志收集模块位于请求上下文中,则调用日志收集模块获取全局临时变量中的链路标识和/或用于登录客户端的用户账号信息,并将链路标识和/或用户账号信息打印至日志输出文件中。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种日志追踪方法、装置、电子设备及计算机可读存储介质。
背景技术
相关技术中,为了追踪日志信息,通常在需要记录操作日志的位置,根据实际需要记录差异化的日志信息,但是在各个接口处执行日志打印,会造成大量的代码侵入以及代码可读性较低的问题。
发明内容
有鉴于此,本申请的目的在于提出一种日志追踪方法、装置、电子设备及存储介质。
基于上述目的,在第一方面,本申请提供了一种日志追踪方法,所述方法包括:
响应于接收到来自于客户端的操作请求,在应用上下文中生成与所述操作请求对应的全局临时变量,并获取与所述操作请求对应的用户登录标识;
调用装饰器通过通用唯一识别码生成与所述操作请求对应链路的链路标识,并获取与所述用户登录标识对应的用户账号信息;
将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在上下文中传递所述全局临时变量;
响应于接收到来自于客户端的收集请求,调用预设检测函数确定所述收集请求所指示的日志收集模块是否位于请求上下文中;
若所述日志收集模块位于所述请求上下文中,则调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或用于登录客户端的用户账号信息,并将所述链路标识和/或所述用户账号信息打印至日志输出文件中。
在第二方面,本申请提供了一种日志追踪装置,所述装置包括:
生成模块,被配置为响应于接收到来自于客户端的操作请求,在应用上下文中生成与所述操作请求对应的全局临时变量,并获取与所述操作请求对应的用户登录标识;
获取模块,被配置为调用装饰器通过通用唯一识别码生成与所述操作请求对应链路的链路标识,并获取与所述用户登录标识对应的用户账号信息;
传递模块,被配置为将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在上下文中传递所述全局临时变量;
确定模块,被配置为响应于接收到来自于客户端的收集请求,调用预设检测函数确定所述收集请求所指示的日志收集模块是否位于请求上下文中;
追踪模块,被配置为若所述日志收集模块位于所述请求上下文中,则调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或所述用于登录客户端的用户账号信息,并将所述链路标识和/或所述用户账号信息打印至日志输出文件中。
在第三方面,本申请提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的日志追踪方法。
在第四方面,本申请提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如第一方面所述的日志追踪方法。
从上面所述可以看出,本申请提供的一种日志追踪方法、装置、电子设备及存储介质,当接收到来自于客户端的操作请求时,可以在应用上下文中生成与操作请求对应的全局临时变量,并获取与操作请求对应的用户登录标识。可以调用装饰器通过通用唯一识别码生成与操作请求对应链路的链路标识,并获取与用户登录标识对应的用户账号信息;进一步可以将链路标识和用户账号信息保存于全局临时变量中,并在应用上下文和请求上下文中传递全局临时变量。当接收到来自于客户端的收集请求,可以调用预设检测函数确定收集请求所指示的日志收集模块是否位于请求上下文中,若日志收集模块位于请求上下文中,则可以调用日志收集模块获取全局临时变量中的链路标识和或用于登录客户端的用户账号信息,并将获取到的链路标识和或用户账号信息打印至日志输出文件中。利用装饰器辅以上下文管理,可以降低开发和运维成本,同时降低业务层代码侵入,进而还可以降低日志存储成本。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例所提供的一种日志追踪方法的示例性流程示意图。
图2示出了根据本申请实施例的一种应用场景对应的示意图。
图3示出了本申请实施例所提供的一种日志追踪装置的示例性结构示意图。
图4示出了本申请实施例所提供的一种电子设备的示例性结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如背景技术部分所述,相关技术中,为了追踪日志信息,通常在需要记录操作日志的位置,根据实际需要记录差异化的日志信息。
通过发明人的研究发现,相关技术中,在各个接口处执行日志打印,会造成大量的代码侵入以及代码可读性较低的问题。在另一种相关技术中,为了避免在每个接口层分别处理带来的巨大工作量,可以通过简单的装饰器实现在每个接口开始/结尾加上统一格式化的操作日志,但是如果需要针对接口业务层的日志也记录相关信息,需要在各日志记录点单独补充,依然不能避免代码侵入性强的问题,且容易造成格式不一致,不便于后续的日志分析。在另一种相关技术中,为了追踪链路,一般也会选择为每个请求生成唯一请求id,通过日志参数的方式记录到日志中,进而在同一个请求的上下文中始终可以读取到这个唯一请求id,目前可以通过使用全局ThreadLocal对象的方式来实现。但是ThreadLocal通过线程的独立副本的存储方式,能够实现链路trace_id的上下文传递,但是增加了额外的维护成本。
正因如此,本申请提供了一种日志追踪方法、装置、电子设备及存储介质,当接收到来自于客户端的操作请求时,可以在应用上下文中生成与操作请求对应的全局临时变量,并获取与操作请求对应的用户登录标识。可以调用装饰器通过通用唯一识别码生成与操作请求对应链路的链路标识,并获取与用户登录标识对应的用户账号信息;进一步可以将链路标识和用户账号信息保存于全局临时变量中,并在应用上下文和请求上下文中传递全局临时变量。当接收到来自于客户端的收集请求,可以调用预设检测函数确定收集请求所指示的日志收集模块是否位于请求上下文中,若日志收集模块位于请求上下文中,则可以调用日志收集模块获取全局临时变量中的链路标识和或用于登录客户端的用户账号信息,并将获取到的链路标识和或用户账号信息打印至日志输出文件中。利用装饰器辅以上下文管理,可以降低开发和运维成本,同时降低业务层代码侵入,进而还可以降低日志存储成本。
下面通过具体的实施例来对本申请实施例所提供的日志追踪方法进行具体说明。
图1示出了本申请实施例所提供的一种日志追踪方法的示例性流程示意图。
参考图1,本申请实施例所提供的一种日志追踪方法具体包括以下步骤:
S102:响应于接收到来自于客户端的操作请求,在应用上下文中生成与所述操作请求对应的全局临时变量,并获取与所述操作请求对应的用户登录标识。
S104:调用装饰器通过通用唯一识别码生成与所述操作请求对应链路的链路标识,并获取与所述用户登录标识对应的用户账号信息。
S106:将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在所述应用上下文和请求上下文中传递所述全局临时变量。
S108:响应于接收到来自于客户端的收集请求,调用预设检测函数确定所述收集请求所指示的日志收集模块是否位于请求上下文中。
S110:若所述日志收集模块位于所述请求上下文中,则调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或用于登录客户端的用户账号信息,并将所述链路标识和/或所述用户账号信息打印至日志输出文件中。
在一些实施例中,该方法可以应用于服务器,也即服务端,当在服务端的当前开发框架中接收到来自于某一个客户端的请求时,该请求可以为与客户端交互的用户的操作请求,例如登录请求、访问请求或交互请求等,进而可以在应用上下文中生成与该请求对应的全局临时变量,用于伴随该请求,进而在开发框架中进行传递。具体地,当前开发框架可以为Flask框架,其中可以包括有应用上下文(也可称为AppContext),在应用上下文中可以生成全局临时变量,可以表示为Flask.g,这是单次请求对应的全局临时变量,它随着接收到请求而被创建,并可以在请求结束时被销毁,因此需要说明的是,Flask框架层统一完成了该全局临时变量的生成和销毁。需要说明的是,全局临时变量具有全局变量的特性,因为全局临时变量是跨函数可访问的,能够实现函数间共享的。但是全局临时变量并不是传统意义上的全局变量,因为全局临时变量仅在请求上下文这个作用域中有效,会随着请求的结束而销毁,具有临时特性。
进一步地,同一时间可能存在多个请求,为了保证每个请求在开发框架中是相互独立的,可以调用预设函数库(例如Flask框架中的werkzeug)中的局部类(例如local.Local类)生成分别与每个请求所处线程对应的线程标识,例如线程ID,并将线程标识与其对应的全局临时变量唯一绑定。例如,接收到请求A和请求B,请求A所处的线程为线程1,请求B所处的线程为线程2,则请求A对应的线程标识可以为1,请求B对应的线程标识可以为2,进而实现了不同请求的全局临时变量能够相互独立,实现了线程之间的相互隔离,互不影响。
图2示出了根据本申请实施例的一种应用场景对应的示意图。
在一些实施例中,参考图2,可以将装饰器应用于与当前请求对应的视图,装饰器实质上是一种函数,具体地可以选择可以实现自定义参数级的日志记录装饰器,进而可以调用该装饰器的功能模块,例如可以调用装饰器通过通用唯一识别码(也即uuid)生成与当前请求对应链路的链路标识,例如可以为trace_id。在用户的当前请求中可以获取到与发出请求的用户相对应的用户登录标识,用于标识用户的身份,区分不同的用户。进而装饰器中的功能模块,可以根据用户登录标识登录用户本地终端的存储数据库(例如cookie),进而可以在存储数据库中获取与用户登录标识相对应的用户账号信息,进而确定该用户账号信息所指示的用户账号是否有效或者是否具有请求权限,以验证用户账号是否有效为例,当确定用户账号信息所指示的用户账号有效,可以将链路标识和用户账号信息保存在全局临时变量中,并在上下文中传递。具体地,可以依次在当前开发框架中的每个上下文中传递该全局临时变量,需要说明的是,开发框架中的上下文包括但不限于应用上下文和请求上下文。
在一些实施例中,可以基于logging.Logger基类,重写parse_param方法,其中logging.Logger为日志处理模块,parse_param方法为可以对日志输出进行统一管理的执行方法。由于日志模块在多个进程中会使用,比如Flask的worker进程和在异步任务处理进程等等,而只有在Flask request上下文(也即请求上下文)中,才能追踪到对应请求的trace_id和用户账号信息,形成调用链,进而追踪对应日志。所以,当接收到来自于客户端的收集请求时,可以通过调用预设检测函数确定该收集请求所指示的日志收集模块是否处于请求上下文中,其中预设检测函数可以为has_app_context,可以用于测试代码级的数据。具体地,has_app_context可以通过判断是否存在_request_ctx_stack栈顶元素,来确定当前场景日志收集模块是否位于请求上下文中,如果确定存在_request_ctx_stack栈顶元素,则确定日志收集模块位于请求上下文中,也即在请求上下文中需要执行收集日志的操作。需要说明的是,_request_ctx_stack为保存请求上下文的全局栈,是LocalStack的实例。在当前请求开始时,会将创建请求上下文RequestContext对象并推入_request_ctx_stack栈中,对于应用上下文,同样存在名为_app_ctx_stack的全局栈,若此时_app_ctx_stack栈顶为空,则将当前的AppContext入栈到当前_app_ctx_stack中,如果当前请求结束,则请求上下文以及应用上下文也将相继被出栈,节省栈内空间。
需要说明的是,收集请求可以来自于客户端,该请求可以用于指示所调用的日志收集模块,该日志收集模块可以用于收集日志信息,例如全局临时变量中的链路标识和/或用于登录客户端的用户账号信息。
进一步地,当确定日志收集模块位于请求上下文中,由于确定链路标识和用户账号信息位于请求上下文中,则可以通过日志收集模块中的获取函数,例如getattr函数,获取全局临时变量中的链路标识和或用户账号信息。具体地,可以根据当前请求确定待调用上下文对象,确定待调用上下文对象是否为全局临时变量,如果待调用上下文对象为全局临时变量,则可以调用获取函数获取全局临时变量中的链路标识和或用户账号信息。
需要说明的是,日志的收集可以为服务端自动执行的,例如当链路标识和或用户账号信息被存储于全局临时变量中时,可以产生对应的日志文件,在确定产生日志文件时,服务端可以自动调用日志收集模块对日志文件进行收集。
在一些实施例中,为了便于获取日志后的分析工作,可以统一日志格式。具体地,可以将日志输出文件对应的日志结构体参数输入类型(也即日志msg参数输入类型)统一格式化为字典类型,其中日志结构体参数输入类型支持字符串、字典、对象等多种类型,进而确定日志结构体字典(也即日志msg字典)。进一步地,将链路标识和或用户账号信息对应的参数类型格式化为字典类型,进而将链路标识和或用户账号信息添加至msg字典中,并将链路标识和或用户账号信息打印至日志输出文件中。
参考图2,用户可以通过大数据平台收集日志输出文件,进而对日志输出文件进行进一步的分析工作。
在一些实施例中,由于将装饰器应用于具体的视图,则在接收到请求时,可以自动执行装饰器中的功能模块,对应接口下所有应用级/业务级的日志都会默认加上链路标识和用户账号信息。
从上面所述可以看出,本申请提供了一种日志追踪方法、装置、电子设备及存储介质,当接收到来自于客户端的操作请求时,可以在应用上下文中生成与操作请求对应的全局临时变量,并获取与操作请求对应的用户登录标识。可以调用装饰器通过通用唯一识别码生成与操作请求对应链路的链路标识,并获取与用户登录标识对应的用户账号信息;进一步可以将链路标识和用户账号信息保存于全局临时变量中,并在应用上下文和请求上下文中传递全局临时变量。当接收到来自于客户端的收集请求,可以调用预设检测函数确定收集请求所指示的日志收集模块是否位于请求上下文中,若日志收集模块位于请求上下文中,则可以调用日志收集模块获取全局临时变量中的链路标识和或用于登录客户端的用户账号信息,并将获取到的链路标识和或用户账号信息打印至日志输出文件中。利用装饰器辅以上下文管理,可以降低开发和运维成本,同时降低业务层代码侵入,进而还可以降低日志存储成本。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图3示出了本申请实施例所提供的一种日志追踪装置的示例性结构示意图。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种日志追踪装置。
参考图3,所述日志追踪装置,所述装置包括:生成模块、获取模块、传递模块、确定模块以及追踪模块;其中,
生成模块,被配置为响应于接收到来自于客户端的操作请求,在应用上下文中生成与所述操作请求对应的全局临时变量,并获取与所述操作请求对应的用户登录标识;
获取模块,被配置为调用装饰器通过通用唯一识别码生成与所述操作请求对应链路的链路标识,并获取与所述用户登录标识对应的用户账号信息;
传递模块,被配置为将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在所述应用上下文和请求上下文中传递所述全局临时变量;
确定模块,被配置为响应于接收到来自于客户端的收集请求,调用预设检测函数确定所述收集请求所指示的日志收集模块是否位于请求上下文中;
追踪模块,被配置为若所述日志收集模块位于所述请求上下文中,则调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或用于登录客户端的用户账号信息,并将所述链路标识和/或用户账号信息打印至日志输出文件中。
在一种可能的实现方式中,所述生成模块,进一步被配置为:
调用预设函数库中的局部类生成所述当前请求所处线程的线程标识,并将所述线程标识与所述全局临时变量唯一绑定。
在一种可能的实现方式中,所述获取模块进一步被配置为:
根据所述用户登录标识登录用户本地终端的存储数据库;
在所述存储数据库中获取与所述用户登录标识对应的用户账号信息。
在一种可能的实现方式中,所述传递模块进一步还被配置为:
确定所述用户账号信息指示的用户账号是否有效;
若所述用户账号信息指示的用户账号有效,则将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在所述应用上下文和所述请求上下文中传递所述全局临时变量。
在一种可能的实现方式中,所述追踪模块进一步还被配置为:
响应于接收到日志调用请求,根据所述日志调用请求确定待调用上下文对象;
确定所述待调用上下文对象是否为所述全局临时变量;
若所述待调用上下文对象为所述全局临时变量,则调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或所述用户账号信息。
在一种可能的实现方式中,所述追踪模块进一步还被配置为:
将所述日志输出文件对应的日志结构体参数输入类型统一格式化为字典类型,并确定日志结构体字典;
将所述链路标识和/或所述用户账号信息对应的参数类型格式化为字典类型以将所述链路标识和/或所述用户账号信息添加至所述日志结构体字典中,并将所述链路标识和/或所述用户账号信息打印至日志输出文件中。
在一种可能的实现方式中,所述获取模块进一步还被配置为:
将所述装饰器应用于与当前请求对应的视图以调用所述装饰器通过通用唯一识别码生成与所述当前请求对应链路的链路标识。
在一种可能的实现方式中,所述装置,还包括:销毁模块;
所述销毁模块被配置为:
确定所述日志输出文件是否已被发送至所述客户端;
若所述日志输出文件已被发送至所述客户端,则销毁所述当前请求对应的全局临时变量。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的日志追踪方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
图4示出了本申请实施例所提供的一种电子设备的示例性结构示意图。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的日志追踪方法。图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器410、存储器420、输入/输出接口430、通信接口440和总线450。其中处理器410、存储器420、输入/输出接口430和通信接口440通过总线450实现彼此之间在设备内部的通信连接。
处理器410可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器420可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器420可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器420中,并由处理器410来调用执行。
输入/输出接口430用于连接输入/输出模块,以实现信息输入及输出。输入/输出模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线450包括一通路,在设备的各个组件(例如处理器410、存储器420、输入/输出接口430和通信接口440)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器410、存储器420、输入/输出接口430、通信接口440以及总线450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的日志追踪方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的日志追踪方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的日志追踪方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例所述的日志追踪方法相对应的,本公开还提供了一种计算机程序产品,其包括计算机程序指令。在一些实施例中,所述计算机程序指令可以由计算机的一个或多个处理器执行以使得所述计算机和/或所述处理器执行所述的日志追踪方法。对应于所述的日志追踪方法各实施例中各步骤对应的执行主体,执行相应步骤的处理器可以是属于相应执行主体的。
上述实施例的计算机程序产品用于使所述计算机和/或所述处理器执行如上任一实施例所述的日志追踪方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种日志追踪方法,其特征在于,所述方法包括:
响应于接收到来自于客户端的操作请求,在应用上下文中生成与所述操作请求对应的全局临时变量,并获取与所述操作请求对应的用户登录标识;
调用装饰器通过通用唯一识别码生成与所述操作请求对应链路的链路标识,并获取与所述用户登录标识对应的用户账号信息;
将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在所述应用上下文和请求上下文中传递所述全局临时变量;
响应于接收到来自于客户端的收集请求,调用预设检测函数确定所述收集请求所指示的日志收集模块是否位于请求上下文中;
若所述日志收集模块位于所述请求上下文中,则调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或用于登录客户端的用户账号信息,并将所述链路标识和/或所述用户账号信息打印至日志输出文件中。
2.根据权利要求1所述的方法,其特征在于,所述响应于在所述当前开发框架中接收到来自于用户的当前请求之后,还包括:
调用预设函数库中的局部类生成所述当前请求所处线程的线程标识,并将所述线程标识与所述全局临时变量唯一绑定。
3.根据权利要求1所述的方法,其特征在于,所述获取与所述用户登录标识对应的用户账号信息,包括:
根据所述用户登录标识登录用户本地终端的存储数据库;
在所述存储数据库中获取与所述用户登录标识对应的用户账号信息。
4.根据权利要求1所述的方法,其特征在于,所述将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在所述应用上下文和请求上下文中中传递所述全局临时变量,包括:
确定所述用户账号信息指示的用户账号是否有效;
若所述用户账号信息指示的用户账号有效,则将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在所述应用上下文和所述请求上下文中传递所述全局临时变量。
5.根据权利要求1所述的方法,其特征在于,所述调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或所述用户账号信息,包括:
根据所述当前请求确定待调用上下文对象;
确定所述待调用上下文对象是否为所述全局临时变量;
若所述待调用上下文对象为所述全局临时变量,则调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或所述用户账号信息。
6.根据权利要求1所述的方法,其特征在于,所述将所述链路标识和/或所述用户账号信息打印至日志输出文件中,包括:
将所述日志输出文件对应的日志结构体参数输入类型统一格式化为字典类型,并确定日志结构体字典;
将所述链路标识和/或所述用户账号信息对应的参数类型格式化为字典类型以将所述链路标识和/或所述用户账号信息添加至所述日志结构体字典中,并将所述链路标识和/或所述用户账号信息打印至日志输出文件中。
7.根据权利要求1所述的方法,其特征在于,所述调用装饰器通过通用唯一识别码生成与所述当前请求对应链路的链路标识,包括:
将所述装饰器应用于与当前请求对应的视图以调用所述装饰器通过通用唯一识别码生成与所述当前请求对应链路的链路标识。
8.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
确定所述日志输出文件是否已被发送至所述客户端;
若所述日志输出文件已被发送至所述客户端,则销毁所述当前请求对应的全局临时变量。
9.一种日志追踪装置,其特征在于,所述装置包括:
生成模块,被配置为响应于接收到来自于客户端的操作请求,在应用上下文中生成与所述操作请求对应的全局临时变量,并获取与所述操作请求对应的用户登录标识;
获取模块,被配置为调用装饰器通过通用唯一识别码生成与所述操作请求对应链路的链路标识,并获取与所述用户登录标识对应的用户账号信息;
传递模块,被配置为将所述链路标识和所述用户账号信息保存于所述全局临时变量中,并在所述应用上下文和请求上下文中传递所述全局临时变量;
确定模块,被配置为响应于接收到来自于客户端的收集请求,调用预设检测函数确定所述收集请求所指示的日志收集模块是否位于请求上下文中;
追踪模块,被配置为若所述日志收集模块位于所述请求上下文中,则调用所述日志收集模块获取所述全局临时变量中的所述链路标识和/或用于登录客户端的用户账号信息,并将所述链路标识和/或用户账号信息打印至日志输出文件中。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任意一项所述的方法。
11.一种计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使所述计算机实现权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310425574.2A CN116483793A (zh) | 2023-04-18 | 2023-04-18 | 日志追踪方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310425574.2A CN116483793A (zh) | 2023-04-18 | 2023-04-18 | 日志追踪方法、装置、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116483793A true CN116483793A (zh) | 2023-07-25 |
Family
ID=87222632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310425574.2A Pending CN116483793A (zh) | 2023-04-18 | 2023-04-18 | 日志追踪方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483793A (zh) |
-
2023
- 2023-04-18 CN CN202310425574.2A patent/CN116483793A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522922A (zh) | 日志信息查询方法、装置、存储介质及计算机设备 | |
CN110162408B (zh) | 一种数据处理方法、装置、设备和机器可读介质 | |
CN110647471A (zh) | 接口测试用例生成方法、电子装置及存储介质 | |
CN111507439A (zh) | 基于信息码的用户信息查验方法及系统 | |
CN111324510B (zh) | 日志处理方法、装置及电子设备 | |
CN117215867A (zh) | 一种业务监控方法、装置、计算机设备及存储介质 | |
CN110838929B (zh) | 系统错误排查方法和系统错误排查装置 | |
CN111177269A (zh) | 基于结构化的区块链数据存储、获取方法及装置 | |
CN116483793A (zh) | 日志追踪方法、装置、电子设备及计算机可读存储介质 | |
CN107294766B (zh) | 一种集中管控的方法及系统 | |
CN111666201A (zh) | 回归测试方法、装置、介质及电子设备 | |
CN111435326A (zh) | 一种分析崩溃日志的方法和装置 | |
CN115269331A (zh) | 面向微服务组的服务拓扑监控方法及相关设备 | |
CN114064429A (zh) | 审计日志的采集方法、装置、存储介质和服务器 | |
CN112379967B (zh) | 模拟器检测方法、装置、设备及介质 | |
CN114969175A (zh) | 保险平台与外部系统的对接方法及相关设备 | |
CN112416875B (zh) | 日志管理方法、装置、计算机设备及存储介质 | |
CN114285774A (zh) | 流量录制方法、装置、电子设备及存储介质 | |
CN112988589A (zh) | 一种接口测试方法、装置和系统 | |
CN112799927A (zh) | 前端用户的操作行为信息采集方法及装置 | |
CN117270833B (zh) | 服务调用及发布方法、介质和计算机设备 | |
CN112488856B (zh) | 一种信息归类方法、设备、电子设备及存储介质 | |
CN112445498B (zh) | 一种程序安装方法、装置、电子设备及存储介质 | |
CN115168235A (zh) | 链路指标采集方法及相关设备 | |
CN117195164A (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 |