CN107003927A - 用于产生关于计算机进程的日志记录信息的高性能机制 - Google Patents
用于产生关于计算机进程的日志记录信息的高性能机制 Download PDFInfo
- Publication number
- CN107003927A CN107003927A CN201580060764.2A CN201580060764A CN107003927A CN 107003927 A CN107003927 A CN 107003927A CN 201580060764 A CN201580060764 A CN 201580060764A CN 107003927 A CN107003927 A CN 107003927A
- Authority
- CN
- China
- Prior art keywords
- thread
- log
- log recording
- application program
- information
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
- G06F11/3068—Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data format conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种日志记录方法,包括以下步骤:在一组信息处理设备上执行包括至少一个应用程序线程(F1,F2)和至少一个日志记录线程(Fj)的进程(P1);在所述至少一个应用程序线程内检测日志记录事件并立即将所述日志记录信息的第一项发送到所述日志记录线程(Fj);基于日志记录信息的第一项接收日志记录信息的所述第一项并且制定日志记录信息的第二项;以及通过发布界面(Ip)将第二项日志记录信息发布到先前用日志记录线程注册的至少一个处理元素(Fs,Pj)。
Description
技术领域
本发明涉及在信息处理设备的组件上执行的软件应用程序中的进程日志记录的领域。更具体地说,本发明涉及在使用多个进程和/或线程运行的软件应用程序的情况下允许进程日志记录的方法。
背景技术
“日志记录”是一种机制,允许在执行软件应用程序的过程中输出信息,以供开发人员,测试者或负责该软件应用程序的技术团队的其他成员注意。该信息允许检测到某些故障,或确定它们的原因并且促进它们的校正(在下文中将被介绍)。日志记录信息的输出可以在软件应用程序的开发阶段进行,也可以在测试人员团队内的测试阶段中进行,也可以在产品阶段进行。然后,日志记录信息被输出到应用程序的用户,但可能以某种方式“传达报告”给负责该软件的技术团队。
日志记录信息可以被输出到显示终端或存储器,特别是大容量存储器“硬盘”类型。
某些“关键”软件应用程序需要高度受限的响应时间,但需要大量的计算。为了协调这两个要求,它们通常部署在由信息处理设备的组件组成的系统上。然后对并行编程技术进行追索(recourse),以便利用这些处理设备。
然而,尽管这种并行性可能是巨大的,但协调响应时间和处理非常大量的计算仍然还存在严重的限制。
此外,例如,日志记录需要输入/输出到显示终端或存储器。输入/输出机制在处理时间方面是昂贵的。因此,日志记录对软件应用程序的性能有影响。
在关键软件应用程序的框架下,甚至经常选择不执行任何日志记录,以免降低其性能。因此,这样做的结果是难以检测和校正该软件应用程序的故障。
发明内容
本发明的目的是通过提供允许有效日志记录的机制来改进现有技术,包括关键软件应用程序,特别是并行软件应用程序。
为此,本发明提供一种日志记录方法,包括以下步骤:
-在信息处理设备的组件上执行进程,该进程包括至少一个应用程序线程和至少一个日志记录线程;
-在所述至少一个应用程序线程内检测日志记录事件,并立即将第一日志记录信息传送到所述至少一个日志记录线程;
-接收所述第一日志记录信息并从所述第一日志记录信息开始生成第二日志记录信息;和,
-通过发布接口向所述至少一个日志记录线程注册的至少一个处理元素发布所述第二日志记录信息。
根据优选实施方案,本发明包括以下特征中的一种或多种,其可以彼此分开使用或部分组合使用或彼此完全组合使用:
-所述至少一个处理元素包括属于所述进程的输出线程。
-所述至少一个处理元素包括不同于所述进程的日志记录进程的线程。
-所述应用程序线程经由通信接口异步地将所述第一信息发送到所述至少一个日志记录线程。
-所述通信接口和所述发布接口是套接字类型并符合ZeroMQ库。
-在所述进程开始时,至少一个应用程序线程在继续执行之前等待所述至少一个日志记录线程的初始化,并且其中所述日志记录线程通过使其自身与所述的所述至少一个处理元素同步来初始化自身。
-所述第一日志记录信息包括名称和级别。
-当所述进程被复制时,所述至少一个日志记录线程被终止,然后在初始父进程内重新启动。
-当所述至少一个日志记录线程接收到信号时,它发布与所述信号相关联的第二日志记录信息,然后触发与所述信号相关联的进程代码。
-当所述应用程序线程接收到信号时,它将与所述信号相关联的第一日志记录信息发送到所述至少一个日志记录线程,等待给定时间,然后导致所述进程的终止。
阅读本发明优选的一个实施例的描述后,本发明的其他特征和优点将通过实例并参照附图给出。
附图说明
图1示意性地示出了本发明的一个示例性实施例的框图。
图2示意性地示出了根据本发明的一个实施例的有限状态机制的框图。
具体实施方式
从软件的角度来看,软件应用程序由一个或多个进程组成。
“进程”可以被视为由信息处理系统(或计算机)执行的程序。进程可以被定义为包括:
-一组待执行的指令,其可以在只读存储器中,但是经常从大容量存储器下载到随机存取存储器;
-用于存储堆栈、工作数据等的随机存取存储器中的寻址空间;
-资源(如网络端口)。
相同的进程可以包括几个线程(或任务或轻进程)。与进程相反,线程不会处理其自己的虚拟内存,而是与同一进程的所有线程共享。
在图1所示的示例中,应用程序包括两个进程P1,P2。进程P1包括三个线程F1,F2,F3。虽然图中未示出,但是进程P2也可以包括多个线程。
应当注意,线程的使用期(lifetime)可以与进程的使用期不同,更不用说与应用程序的执行的持续时间不同:线程可以在进程的执行过程中动态地执行并且一旦任务完成则线程随时终止(其中该线程是关于该任务提供的)。因此,图1示出了在软件应用程序执行中的给定时刻的情况。
在下文中,线程F1,F2将被称为“应用程序线程”,以便将它们与下面将要描述的日志记录线程(或多个日志记录线程)Fj以及输出线程Fs区分开。
允许执行软件应用程序的信息处理系统通常是由信息处理设备的组件形成的并行系统。
每个信息处理设备可以例如是具有相关联的电路(存储器等)的微处理器,然后该系统由互连的微处理器的组件形成。另一个例子是形成系统并由物理核心的组件组成的单个微处理器。这样的微处理器通常被称为“多核”。
不管所实施的架构如何,图1中的示例的进程P1,P2,PJ和它们包括的线程可以并行执行。
当进程P1启动时,至少一个线程也启动。该第一线程随后可以启动其他线程的执行。这些线程当然可以是应用程序线程(即,属于应用程序并允许实现应用程序的“逻辑”),并且特别地也可以是日志记录线程FJ。
在下文中,如图1所示,仅描述一个日志记录线程。然而,可以提供多个日志记录线程,特别是为了能够分配负载。
根据一个实施例,当日志记录线程启动时,它创建:
-通信接口IC,该通信接口IC允许从应用程序线程F1,F2接收第一日志记录信息(即,从主应用程序线程和其随后可能产生的任何可能的线程接收第一日志记录信息);
-发布接口Ip,允许向处理元素发布第二日志记录信息。
这里,“处理元素”是指线程和进程。在图1中,如稍后将看到的,日志记录进程PJ和输出线程FS形成能够接收日志记录信息的该处理元素。
根据本发明的一个实施例,这些接口是“套接字(socket)”类型。“套接字”是本领域技术人员熟知的在“Unix”类型的操作系统上开发的通信机制,但是现在存在于大多数操作系统下。
它们可能例如符合ZeroMQ。ZeroMQ是“中间件”类型的平台,它插入在底层操作系统和应用程序之间,以提供独立于操作系统的附加基础设施服务。对于并行平台(例如CORBA(Common Object Request Broker Architecture,通用对象请求代理体系架构)),例如,ZeroMQ提供了很便利的使用和卓越的性能特性:代码对于应用程序线程来说非常短,使得进程几乎不过载(overload),并且在ZeroMQ库中的处理本身也很快。因此,ZeroMQ符合本发明的要求并且允许满足期望的服务,而没有任何可能有害的附加处理。
ZeroMQ提供的机制特别地可以通过使用C语言的应用程序代码的库来访问。因此,本发明的机制和优点因此是对用C语言开发的进程是可访问的。
根据一个实施例,通信接口IC是异步接口:它允许应用程序线程发送日志记录信息,然后继续其处理,而不必等待来自日志记录线程FJ的确认。
在使用ZeroMQ的实现的框架中,该通信接口IC可以是推/拉(push/pull)型。在这种情况下,启动时,日志记录线程将创建一个“拉”类型的套接字。然后,应用程序线程F1,F2可以经由与日志记录线程FJ的“拉”套接字连接的“推”型套接字来发送日志记录信息。
在形成通信接口IC的两种类型的套接字之间,可以建立诸如“inproc”协议的线程间和进程内传输协议。该协议允许在同一进程内的线程之间传输消息:信息由属于与进程相关联的上下文的存储器直接发送。因此,该机制不产生任何输入/输出,因此有助于根据本发明的方法的高性能。
发布接口IP可以包括在日志记录线程FJ内创建的“pub”类型的套接字。处理元素(进程或线程)PJ,FS可以创建“子(sub)”类型的套接字,以便订阅日志记录线程PJ的“pub”套接字。因此,由ZeroMQ管理的“发布订阅”模型允许将消息发送到已经订阅的所有处理元素。
根据本发明的一个实施例,在进程P1开始时,应用程序线程在继续执行之前等待该日志记录线程FJ的初始化。
当进程P1启动日志记录线程FJ的执行时,进程P1的(主)线程可以指示必须接收日志记录信息的处理元素的数量。它将只在达到订阅处理元素的该数量时从日志记录线程FJ接收确认。一旦接收到确认,线程就可以继续执行。
类似地,日志记录线程FJ通过使其自身与必须接收日志记录信息的处理元素的数量同步来初始化。
为此,日志记录线程FJ可以发布同步信息。在接收到该信息时,已经接收到该信息的处理元素将向日志记录线程发送确认。日志记录线程可以对收到的确认进行计数,并容易确定何时达到指定的数字。
该同步阶段允许确保没有日志记录信息丢失:实际上,日志记录线程FJ和处理元素之间的连接的建立可能需要一定的时间。此外,处理元素自身也可能处于初始化进程中。在此期间,如果日志记录线程FJ立即开始发送日志记录信息,则由于在接收处理元素发布的日志记录信息的传输中不存在确认,而将导致日志记录信息丢失。确认的这种不存在允许实现良好的性能特征。
然而,在某些情况下,重要的是,甚至至关重要的是,不要丢失任何日志记录信息。
根据该实施方式,因此可以规定处理元素的数量,其中关于该数量,通过该同步机制必须保证所有同步信息的接收。
元素的该数量决定了该组订阅处理元素的子集,因为一旦初始化阶段完成,优选地其他处理元素可以订阅至日志记录线程FJ的公布。但是,后者可能会错过日志记录线程FJ的第一公布。
根据本发明的日志记录方法包括执行进程P1的步骤。如前所述,该执行涉及执行至少一个应用程序线程F1和一个日志记录线程FJ。在以C语言编写的进程的情况下,该应用程序线程F1可以对应于函数main()的执行。
一旦初始化阶段完成后,应用程序线程(或多个应用程序线程)执行软件应用程序的代码。
然后,该方法包括在应用程序线程(或多个应用程序线程)内检测日志记录事件,并且包括立即将第一日志记录信息e1,e2发送到日志记录线程FJ。
日志记录事件的检测是本身已知的技术,其中包括将“日志记录器”插入到代码中,以便在满足某些条件时触发日志记录事件。这些条件可能仅仅是通过代码中的精确点的通道(passage,从而允许代码的操作序列被遵循),或者出现错误的情况等。
由应用程序线程F1,F2生成的日志记录信息在这里被称为“第一日志记录信息”,以便将其与日志记录线程FJ发布的第二日志记录信息区分开来。
该信息可以仅包含名称和级别。根据一个实施例,该第一信息仅包括该名称和该级别。
该名称可以是在应用程序代码中标识日志记录器的一串字符。
该级别通常是一个整数,标识事件的严重程度。该级别可以属于预先定义的列表,其可以包括:
-“严重”:表示通常导致流程终止的严重错误。
-“错误”:表示正常错误。
-“警告”:表示不重要的错误。
-“输出”:表示不与错误相关联的正常消息。
-“信息”:表示为应用程序的用户(而不仅仅是开发人员或测试人员)注意的消息。
-“调试”:表示旨在供应用程序的测试人员(或“调试器”)使用的更详细的信息。
-“跟踪”:表示与最详细级别相关联的消息。它的使用显然是旨在用于应用程序的开发阶段。
该清单当然是不穷尽的。许多其他级别可以由应用程序的开发人员定义。
重要的是,旨在用于开发人员或测试者的所有输出都符合这种形式,以便由本发明的机制考虑。因此对于开发人员特别重要的是,避免直接输出,特别是通过C语言的printf()函数:例如它们可以由“输出”级别替代。
该第一信息还可以包括:
-日志记录事件发生的时间戳;
-进程P1的标识符;
-关于执行上下文的其他信息:内核线程的标识符、软件应用程序的名称、文件的名称、应用程序代码的行数、执行过程中的函数的名称等。
根据本发明,应用线程经由通信接口IC立即将该第一日志记录信息发送到日志记录线程FJ。如前所述,此接口是异步的,不需要任何确认。通过如下方式,也没有安装任何锁:即一旦执行传输(并且不用担心日志记录线程进行的接收),应用程序线程F1,F2可以立即继续应用程序处理。
根据一个实施例,在日志记录事件的检测和第一日志记录信息的生成之间不应用其他处理。
根据一个实施例,仅应用格式化处理操作。
在任何情况下,根据本发明,应用程序线程都不建立输入/输出机制:这些机制由日志记录线程FJ实现,因此在应用程序线程F1、F2外部传输。
因此,对于应用程序线程,额外的成本降至最低。
根据本发明的一个实施例,将应用程序代码分成模块。每个模块与名称或标识符相关联,该名称或标识符可以并入日志记录器的名称。
例如,在模块“Module1”中,日志记录器具有名称“Module1.logger1”,“Module1.logger2”等。
该机制允许各种日志记录事件被更清楚地命名:在字符串的末尾,代码中发生事件的位置可以根据包括在其名称中的模块名称直接地确定。
日志记录线程FJ以异步方式接收由应用程序线程或线程F1,F2生成的第一日志记录信息。因此,它的作用是生成从自应用程序线程接收到的第一个日志信息开始的第二日志记录信息,并且可能根据补充信息生成第二日志记录信息。该补充信息可以是该进程的所有应用程序线程所共有的信息。
由日志记录线程FJ执行的进程可以被限制于生成该第二日志记录信息。一方面,该生成一方面可包括添加可能的补充信息,并且还包括根据允许其由处理元素利用的预定格式来调节。
该格式化可能非常简单,并且仅由格式化组成,使得第二信息的格式化与所使用的计算机编程语言无关。
该第二信息随后由日志记录线程FJ经发布接口IP发布。如前所述,它可以由一个或多个已经利用日志记录线程注册的处理元素Fs,PJ接收。
这些处理元素可以包括属于进程P1的输出线程Fs。该输出线程可以被设计为形成第二日志记录信息在显示终端(屏幕等)上的输出,在存储于存储器(特别是大容量存储器等)的文件中的输出。
由于要求与与硬件的交互,以及,通常由于确认的必要性(线程必须确保信息事实上已经存储在硬盘上等等),这些输出机制在进程时间上通常是代价高昂的。
由于本发明,这些机制通过与日志记录线程平行的方式,而不会影响遵循其运行顺序的应用程序线程。
处理元素还可以包括与所述进程P1不同的日志记录进程PJ。
该进程也可以以与输出线程FS相同的方式实现输出机制。
它还可以实现更复杂的机制来利用日志信息:过滤等
根据本发明的一个实施例,当复制进程P1时,日志记录线程FJ和可能的输出线程FS终止,然后在初始的父进程P1中重新启动。在子进程中,这两个线程不重新启动(如下所述的它们进入“完成”状态)。实际上,子进程通常会触发执行一个函数“exec()”,该函数将用新的程序代替和“粉碎”子进程的内容:因此,不需要触发日志记录和输出线程的自动重启,甚至可能会是相反的效果。
复制或“分叉”(“fork”)是在“Unix”类型(或符合Posix标准)的操作系统下运行的软件应用程序中创建新进程的机制。
包含多个线程的进程(“多线程进程”)的复制造成了重大问题。这个问题在Posix标准IEEE 1003.1中特别地描述,特别是在“理由”部分。
本发明实施的机制允许回避。
此外,可以设置状态机的管理以便最好地管理复制“fork()”。
图2示出了日志记录线程FJ的这种状态机。认为日志记录线程FJ可以处于5个主要状态。这些状态是常规的:
-“未设置”,对应于“未启动”状态,这对应于线程可能在应用程序线程触发其初始化之前的状态。
-“初始化中”,对应于线程的初始化状态,在此期间,先前描述的同步步骤特别地发生。
-“初始化后”,对应于日志记录线程的正常操作。
-“结束中”,对应于日志记录线程的终止。
-“结束后”,对应于线程已经结束的状态。
在某些状态下,根据本发明的这个实施例,禁止复制。这是关于“初始化中”和“结束中”状态的情况:箭头“fork()”导致“非法”状态。
在特定状态“未设置”和“结束后”中,可以允许复制,而不引起特定的处理操作。箭头“fork()”返回当前状态。
在“初始化后”状态下,复制将转换到状态“结束中”,以终止日志记录线程。
对于可能的输出线程FS也是如此。
一旦线程结束,该进程可以复制。
一旦已经执行了复制,线程FJ和FS可以重新启动。在父进程(换句话说,初始进程P1)中,线程在复制之前的状态下重新启动,换句话说就是所述“初始化后”的状态。在子进程中,线程以“未设置”状态开始:子进程的应用程序线程必须启动其初始化以使其更改状态。
此外,在Posix或unix类型的系统下操作的进程P1可以接收信号。可以提供这些信号用于终止进程,例如信号SIGINT,SIGTERM,SIGQUIT,SIGSEGV,SIGBUS。
当日志记录线程FJ接收到这样的信号时,日志记录线程FJ可以根据其性质来选择是否处理它们。例如,信号SIGINT,SIGTERM和SIGQUIT可被认为需要被应用程序线程处理,并且因此不被日志记录线程考虑。另一方面,可以考虑其他类型的信号,例如信号SIGSEGV和SIGBUS。
在接收到这样的信号时,日志记录线程FJ可以认为这构成日志记录事件,然后发布与该信号相关的日志记录信息。
随后,它可能再次触发该信号及其“正常”进程。信号的正常处理由通常被称为“处理程序”(“handler”)并与该信号相关联的进程代码提供。该信号SIGSEGV或SIGBUS的正常进程导致该进程的终止。
因此,通过这种机制,该进程采用了即将结束的预期行为,但也确保了与收到此事件相关联的日志记录的发生:同样,如果处理元素被订阅到日志记录线程,那么它将被通知进程P1的终止原因。
如果应用程序线程接收到信号,该应用程序线程可能会确定它构成一个日志记录事件。为此,特定代码可以作为“处理程序”与该信号相关联:在接收给定信号时,由操作系统触发的是该特定代码。
该特定代码使得能够通过通信接口IC立即将(第一)日志记录信息传送到所述日志记录线程。
该代码还可以包括等待时间,允许日志记录线程生成从该第一日志记录信息开始的第二日志记录信息,并通过发布接口进行发布。
只有这样,特定代码才能调用正常的进程代码,以便实现进程的终止或终止进程本身。
因此,可以向订阅的处理元素通知进程终止的原因。
不言而喻,本发明不限于所描述和示出的实施例和实施例,而是本领域技术人员可以获得的许多变型。
Claims (10)
1.一种日志记录方法,包括以下步骤:
在信息处理设备的组件上执行进程(P1),该进程(P1)包括至少一个应用程序线程(F1,F2)和至少一个日志记录线程(Fj);
在所述至少一个应用程序线程内检测日志记录事件,并且立即将第一日志记录信息发送给所述至少一个日志记录线程(FJ);
接收所述第一日志记录信息并生成从所述第一日志记录信息开始的第二日志记录信息;以及,
经由发布接口(IP)向先前在所述至少一个日志记录线程注册的至少一个处理元素(Fs,PJ)发布所述第二日志记录信息。
2.根据权利要求1所述的方法,其中所述至少一个处理元素包括属于所述进程(P1)的输出线程(Fs)。
3.根据权利要求1和2中任一项所述的方法,其中所述至少一个处理元素包括与所述进程(P1)不同的日志记录进程(PJ)的线程。
4.根据前述权利要求之一所述的方法,其中所述应用程序线程(F1)经由通信接口(IC)以异步方式将所述第一信息发送到所述至少一个日志记录线程。
5.根据前述权利要求所述的方法,其中所述通信接口和所述发布接口是套接字类型并且符合ZeroMQ库。
6.根据前述权利要求之一所述的方法,其中在所述进程(P1)开始时,所述至少一个应用程序线程(F1,F2)在继续执行之前等待所述至少一个日志记录线程(Fj)的初始化,并且其中通过将所述日志记录线程自身与所述至少一个处理元素(Fs,PJ)的子集同步来初始化所述日志记录线程。
7.根据前述权利要求之一所述的方法,其中所述第一日志记录信息包括名称和级别。
8.根据前述权利要求之一所述的方法,其中当所述进程(P1)被复制时,所述至少一个日志记录线程(FJ)终止,然后在初始的父进程(P1)内重新启动。
9.根据前述权利要求之一所述的方法,其中,当所述至少一个日志记录线程接收到信号时,所述至少一个日志记录线程发布与所述信号相关联的第二日志记录信息,然后触发与所述信号相关联的处理代码。
10.根据前述权利要求之一所述的方法,其中,当所述应用程序线程接收到信号时,所述应用程序线程将与所述信号相关联的第一日志记录信息发送到所述至少一个日志记录线程,等待给定时间,然后使得终止所述进程。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1458511A FR3025627B1 (fr) | 2014-09-10 | 2014-09-10 | Mecanisme haute performance pour generation d'informations de journalisation d'un processus informatique |
FR1458511 | 2014-09-10 | ||
PCT/FR2015/052267 WO2016038272A1 (fr) | 2014-09-10 | 2015-08-25 | Mecanisme haute performance pour generation d'informations de journalisation d'un processus informatique |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107003927A true CN107003927A (zh) | 2017-08-01 |
Family
ID=52450276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580060764.2A Pending CN107003927A (zh) | 2014-09-10 | 2015-08-25 | 用于产生关于计算机进程的日志记录信息的高性能机制 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11874758B2 (zh) |
EP (1) | EP3191961A1 (zh) |
JP (1) | JP6498770B2 (zh) |
CN (1) | CN107003927A (zh) |
FR (1) | FR3025627B1 (zh) |
IL (1) | IL251095A0 (zh) |
WO (1) | WO2016038272A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190418A (zh) * | 2021-07-01 | 2021-07-30 | 奇安信科技集团股份有限公司 | 日志接收方法、装置、电子设备及存储介质 |
CN113434362A (zh) * | 2021-06-24 | 2021-09-24 | 广州欢网科技有限责任公司 | Android程序发生异常时自动预警的方法及装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649071B (zh) * | 2016-12-30 | 2019-12-20 | 广州华多网络科技有限公司 | 进程内部日志上报的方法和装置 |
FR3075999B1 (fr) | 2017-12-27 | 2021-02-19 | Bull Sas | Procede de controle de la gestion des traces d'evenements dans l'execution d'une application informatique sur une machine informatique |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100049747A1 (en) * | 2008-08-19 | 2010-02-25 | Samsung Electronics Co., Ltd. | Apparatus and method for storing log in a thread oriented logging system |
CN101763593A (zh) * | 2009-12-17 | 2010-06-30 | 中国电力科学研究院 | 一种实现系统审计日志的方法及装置 |
CN102455889A (zh) * | 2010-10-29 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种获取进程输出日志的方法、装置及企业系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870588A (en) * | 1995-10-23 | 1999-02-09 | Interuniversitair Micro-Elektronica Centrum(Imec Vzw) | Design environment and a design method for hardware/software co-design |
US6256775B1 (en) * | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
GB2367642B (en) * | 2000-05-27 | 2004-05-05 | Ibm | Performance profiling tool |
FI114663B (fi) * | 2001-12-20 | 2004-11-30 | Nokia Corp | Menetelmä ja järjestelmä käyttöjärjestelmätoimintojen suorittamiseksi sekä elektroniikkalaite |
JP4686226B2 (ja) * | 2005-03-22 | 2011-05-25 | 株式会社東芝 | 駅務中継機 |
US7661036B1 (en) * | 2005-11-08 | 2010-02-09 | Oakley Networks | Cache for collecting events on a monitored computer |
JP5050357B2 (ja) * | 2006-01-25 | 2012-10-17 | 富士通株式会社 | ロギング情報管理方法およびロギング情報管理システムおよびロギング情報管理手段 |
US20080250412A1 (en) * | 2007-04-06 | 2008-10-09 | Elizabeth An-Li Clark | Cooperative process-wide synchronization |
CN101414255A (zh) * | 2007-10-19 | 2009-04-22 | 国际商业机器公司 | 日志事件处理方法与设备 |
US8499299B1 (en) * | 2010-06-29 | 2013-07-30 | Ca, Inc. | Ensuring deterministic thread context switching in virtual machine applications |
US9384112B2 (en) * | 2010-07-01 | 2016-07-05 | Logrhythm, Inc. | Log collection, structuring and processing |
US8667472B1 (en) * | 2010-07-29 | 2014-03-04 | Disney Enterprises, Inc. | System and method of instrumenting code for in-production monitoring |
WO2012046302A1 (ja) * | 2010-10-05 | 2012-04-12 | 富士通株式会社 | マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム |
US20130024875A1 (en) * | 2011-07-22 | 2013-01-24 | Yilin Wang | Event System And Methods For Using Same |
US8726225B2 (en) * | 2011-08-01 | 2014-05-13 | Vmware, Inc. | Testing of a software system using instrumentation at a logging module |
JP5906883B2 (ja) * | 2012-03-28 | 2016-04-20 | 富士通株式会社 | ログ出力装置、ログ出力方法およびログ出力プログラム |
US9202047B2 (en) * | 2012-05-14 | 2015-12-01 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
US10192261B2 (en) * | 2012-08-23 | 2019-01-29 | Openet Telecom Ltd. | System and method for performing offline revenue assurance of data usage |
US20140237474A1 (en) * | 2013-02-19 | 2014-08-21 | Appsense Limited | Systems and methods for organizing dependent and sequential software threads |
-
2014
- 2014-09-10 FR FR1458511A patent/FR3025627B1/fr not_active Expired - Fee Related
-
2015
- 2015-08-25 WO PCT/FR2015/052267 patent/WO2016038272A1/fr active Application Filing
- 2015-08-25 CN CN201580060764.2A patent/CN107003927A/zh active Pending
- 2015-08-25 US US15/510,638 patent/US11874758B2/en active Active
- 2015-08-25 EP EP15763052.6A patent/EP3191961A1/fr not_active Ceased
- 2015-08-25 JP JP2017534008A patent/JP6498770B2/ja not_active Expired - Fee Related
-
2017
- 2017-03-12 IL IL251095A patent/IL251095A0/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100049747A1 (en) * | 2008-08-19 | 2010-02-25 | Samsung Electronics Co., Ltd. | Apparatus and method for storing log in a thread oriented logging system |
CN101763593A (zh) * | 2009-12-17 | 2010-06-30 | 中国电力科学研究院 | 一种实现系统审计日志的方法及装置 |
CN102455889A (zh) * | 2010-10-29 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种获取进程输出日志的方法、装置及企业系统 |
Non-Patent Citations (2)
Title |
---|
郭节: "基于Log4j改进的日志存储应用研究", 《软件导刊》 * |
黄明等: "实时多线程系统的日志实现", 《软件世界》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434362A (zh) * | 2021-06-24 | 2021-09-24 | 广州欢网科技有限责任公司 | Android程序发生异常时自动预警的方法及装置 |
CN113190418A (zh) * | 2021-07-01 | 2021-07-30 | 奇安信科技集团股份有限公司 | 日志接收方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
IL251095A0 (en) | 2017-04-30 |
FR3025627B1 (fr) | 2018-03-23 |
EP3191961A1 (fr) | 2017-07-19 |
US11874758B2 (en) | 2024-01-16 |
JP2017532703A (ja) | 2017-11-02 |
US20170255540A1 (en) | 2017-09-07 |
JP6498770B2 (ja) | 2019-04-10 |
FR3025627A1 (fr) | 2016-03-11 |
WO2016038272A1 (fr) | 2016-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9984140B1 (en) | Lease based leader election system | |
CN106201694B (zh) | 一种分布式系统下执行定时任务的配置方法及系统 | |
US7827438B2 (en) | Distributed testing system and techniques | |
JP2022515949A (ja) | トランザクション処理方法、装置、機器並びにコンピュータプログラム | |
US8676749B2 (en) | Statement logging in databases | |
CN112463144B (zh) | 分布式存储的命令行服务方法、系统、终端及存储介质 | |
US20140258224A1 (en) | Automatic recovery of a failed standby database in a cluster | |
EP3519987B1 (en) | Intents and locks with intent | |
US20160378785A1 (en) | Distributed work flow using database replication | |
CN107003927A (zh) | 用于产生关于计算机进程的日志记录信息的高性能机制 | |
US9442822B2 (en) | Providing a visual representation of a sub-set of a visual program | |
JP7397986B2 (ja) | ブロックチェーンクロスチェーンデータアクセス方法、装置、アダプタ及びシステム | |
CN106598922B (zh) | 一种字符串转换方法及系统 | |
CN107203465B (zh) | 系统接口测试方法及装置 | |
CN111784318A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110431580B (zh) | 使用随机数表来减少并发区块链交易失败 | |
CN105074656A (zh) | 管理并发谓词表达式的方法和装置 | |
US20160140197A1 (en) | Cross-system synchronization of hierarchical applications | |
CN105653579A (zh) | 一种对分布式事务进行测试的方法和装置 | |
CN106372160A (zh) | 一种分布式数据库及管理方法 | |
CN108121774A (zh) | 一种数据表备份方法及终端设备 | |
CN111159040A (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
US9268608B2 (en) | Automatic administration of UNIX commands | |
Pankowski | Consistency and availability of Data in replicated NoSQL databases | |
EP3811227B1 (en) | Methods, devices and systems for non-disruptive upgrades to a distributed coordination engine in a distributed computing environment |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170801 |
|
WD01 | Invention patent application deemed withdrawn after publication |