CN113468029A - 日志管理方法、装置、电子设备和可读存储介质 - Google Patents
日志管理方法、装置、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN113468029A CN113468029A CN202111035619.2A CN202111035619A CN113468029A CN 113468029 A CN113468029 A CN 113468029A CN 202111035619 A CN202111035619 A CN 202111035619A CN 113468029 A CN113468029 A CN 113468029A
- Authority
- CN
- China
- Prior art keywords
- log
- log information
- information
- program
- memory
- 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
Images
Classifications
-
- 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/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种日志管理方法、装置、电子设备和可读存储介质,在程序启动运行过程中,先将所有级别的日志信息记录到内存中,若程序运行出现异常,则将内存中所有级别的日志信息写入到日志文件。若程序运行未出现异常,则提取出内存中的预设级别的日志信息写入到日志文件。如此,在程序异常时,可以记录所有级别的日志信息到日志文件,保障后续异常排查的顺利执行,并且,在程序未出现异常时,仅将预设级别的日志信息写入到日志文件,可避免日志文件中日志信息的冗余、避免占用过多存储资源。
Description
技术领域
本申请涉及电子设备技术领域,具体而言,涉及一种日志管理方法、装置、电子设备和可读存储介质。
背景技术
软件系统的一个非功能性指标是可维护性,可维护性需要从系统运行监控、告警、预警、异常定位与恢复等方面进行设计,实现可维护性的一种重要手段是记录系统运行日志。日志从系统状态角度可以分为正常日志和异常日志,从日志内容详细程度可以分为错误日志、运行日志、调试日志、追踪日志等。在系统运行异常时,日志对于快速定位异常发生的位置、异常原因分析等具有重要作用。
现有的日志管理方式中,在系统运行时,一般会将日志级别设置为一固定级别,系统运行过程中记录的日志信息为该固定级别的日志信息。但是,采用这种方式,若系统运行出现异常,则由于缺乏固定级别之外的日志信息的记录,对于后续的异常排查将造成阻碍。而若将所有级别的日志信息均记录至日志文件中,在系统运行未出现异常的情况下,又会造成日志信息冗余,浪费存储资源。
发明内容
本申请的目的包括,例如,提供了一种日志管理方法、装置、电子设备和可读存储介质,其能够保障异常原因的准确排查,且避免日志信息的冗余。
本申请的实施例可以这样实现:
第一方面,本申请提供一种日志管理方法,所述方法包括:
在程序启动运行的过程中,收集所有级别的日志信息并记录在内存中;
若程序运行出现异常,则提取出内存中记录的所有级别的日志信息以写入到日志文件;
若程序运行未出现异常,则提取内存中记录的预设级别的日志信息以写入到日志文件。
本实施例中,在出现异常时,将所有级别的日志信息写入到日志文件,有助于后续异常原因的准确排查,在未出现异常时,仅提取预设级别的日志信息写入到日志文件,可避免将全量日志信息进行写入所存在的日志冗余的问题。
在可选的实施方式中,所述提取内存中记录的预设级别的日志信息以写入到日志文件的步骤之后,所述方法还包括:
将内存中记录的、除所述预设级别之外的其他级别的日志信息删除。
本实施例中,在未发生异常的情况下,可避免除预设级别之外的其他级别的日志信息对内存的占用。
在可选的实施方式中,在程序运行出现异常时,所述方法还包括:
判断程序运行出现的当前异常是否为首次异常,若不为首次异常,则基于所述当前异常获得异常统计信息,并将异常统计信息写入到日志文件中;
若所述当前异常为首次异常,则执行所述提取出内存中记录的所有级别的日志信息以写入到日志文件的步骤。
本实施例中,通过进行当前异常是否为首次异常的判断,可以避免在日志文件中重复写入相同的日志信息,避免浪费磁盘空间。
在可选的实施方式中,所述判断程序运行出现的当前异常是否为首次异常的步骤,包括:
获取所述当前异常的异常产生原因和程序调用的链路信息;
根据所述异常产生原因和链路信息确定所述当前异常所属的目标异常类别;
检测所述日志文件中是否存在所述目标异常类别的日志信息,若存在,则判定所述当前异常不是首次异常。
本实施例中,结合异常产生原因和程序调用的链路信息可以准确地确定程序所属的异常类别,以便于当前异常是否为首次异常的判断。
在可选的实施方式中,所述程序的运行涉及多个功能层级;
所述若程序运行出现异常,则提取出内存中记录的所有级别的日志信息以写入到日志文件的步骤,包括:
若程序运行出现异常,则终止程序运行,并从所述多个功能层级中定位到发生异常的功能层级;
提取出内存中记录的、所述发生异常的功能层级的所有级别的日志信息,以写入到日志文件。
本实施例中,可以将异常定位到具体的功能层级,提高后续异常排查的指向性。
在可选的实施方式中,所述若程序运行出现异常,则提取出内存中记录的所有级别的日志信息以写入到日志文件的步骤,还包括:
针对所述多个功能层级中未发生异常的功能层级,提取出内存中记录的所述未发生异常的功能层级的预设级别的日志信息,写入到日志文件;
将所述内存中记录的、所述未发生异常的功能层级的其他级别的日志信息删除。
本实施例中,针对未发生异常的功能层级仅提取预设级别的日志信息写入到日志文件,可以进一步地降低对磁盘空间的占用。
在可选的实施方式中,所述从所述多个功能层级中定位到发生异常的功能层级的步骤,包括:
获取程序运行出现异常时捕获的异常信息;
根据所述异常信息中的堆栈信息定位到发生异常的功能层级。
本实施例中,通过堆栈信息中程序运行异常的步骤的具体程序代码,可准确定位到异常的功能层级。
在可选的实施方式中,所述若程序运行未出现异常,则提取内存中记录的预设级别的日志信息以写入到日志文件的步骤,包括:
若程序运行未出现异常,则至程序运行结束后,根据内存记录的各所述日志信息具有的逻辑层次信息,确定分别与各所述功能层级对应的日志信息;
针对各所述功能层级对应的日志信息,提取出日志信息中预设级别的日志信息以写入到日志文件。
本实施例中,区分与各功能层级对应的日志信息,可便于执行过程中预设级别日志信息的提取和写入。
第二方面,本申请提供一种日志管理装置,所述装置包括:
收集模块,用于在程序启动运行的过程中,收集所有级别的日志信息并记录在内存中;
第一提取模块,用于在程序运行出现异常时,提取出内存中记录的所有级别的日志信息以写入到日志文件;
第二提取模块,用于在程序运行未出现异常时,提取内存中记录的预设级别的日志信息以写入到日志文件。
第三方面,本申请提供一种电子设备,包括一个或多个存储介质和一个或多个与存储介质通信的处理器,一个或多个存储介质存储有处理器可执行的机器可执行指令,当电子设备运行时,处理器执行所述机器可执行指令,以执行前述实施方式中任意一项所述的方法步骤。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有机器可执行指令,所述机器可执行指令被执行时实现前述实施方式中任意一项所述的方法步骤。
本申请实施例的有益效果包括,例如:
本申请提供一种日志管理方法、装置、电子设备和可读存储介质,在程序启动运行过程中,先将所有级别的日志信息记录到内存中,若程序运行出现异常,则将内存中所有级别的日志信息写入到日志文件。若程序运行未出现异常,则提取出内存中的预设级别的日志信息写入到日志文件。如此,在程序异常时,可以记录所有级别的日志信息到日志文件,保障后续异常排查的顺利执行,并且,在程序未出现异常时,仅将预设级别的日志信息写入到日志文件,可避免日志文件中日志信息的冗余、避免占用过多存储资源。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的日志管理方法的流程图;
图2为本申请实施例提供的日志管理方法中,判断方法的流程图;
图3为图2中步骤S210包含的子步骤的流程图;
图4为图1中步骤S120包含的子步骤的流程图;
图5为图1中步骤S120包含的子步骤的另一流程图;
图6为图1中步骤S130包含的子步骤的流程图;
图7为本申请实施例提供的电子设备的结构框图;
图8为本申请实施例提供的日志管理装置的功能模块框图。
图标:110-存储器;120-处理器;130-电源组件;140-通信组件;150-输入/输出接口;160-日志管理装置;161-收集模块;162-第一提取模块;163-第二提取模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本申请的描述中,需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。
日志级别是Java编程语言中的通用方案,log4j/logback/slf4j等日志框架均采用此方案,日志级别用于表示日志内容的重要性。例如,通用的日志级别包括error错误日志、info运行日志、debug调试日志和trace追踪日志等,从左至右级别依次降低,相应地重要性依次降低。程序编码时根据重要性的不同,可采用不同级别进行日志的记录。程序运行时,根据系统设置的日志级别,系统记录当前所设置日志级别及重要性更高级别的日志。例如:日志级别设置为INFO,系统记录日志包括INFO级别日志和ERROR级别日志;日志级别设置为DEBUG,系统记录日志包括DEBUG级别、INFO级别和ERROR级别的日志。
当日志级别设置为INFO级别,系统运行异常时,仅根据ERROR级别日志和INFO级别日志可能无法排查原因,而需要从DEBUG级别日志获取具体原因。此时因DEBUG级别日志缺失,导致不能及时排查。这种情况下,可以手动调整日志级别为DEBUG,有利于排查异常产生原因,但是会带来如下的问题:当日志级别设置为DEBUG级别,系统运行正常时,DEBUG级别日志也会被记录,造成日志内容冗余,浪费资源。
可见,现有的日志管理方式中,系统运行时日志级别设定为固定值后,可能造成日志冗余或者造成日志缺失,不能同时避免两种情况的出现。
基于上述的研究分析,本申请提供一种日志管理方案,可以适应性地进行日志信息的写入,不受系统运行时日志级别设置的约束,而是根据系统运行情况自适应调整,从而可以在出现程序运行异常的情况下,写入完整的日志信息,以助于后续快读、准确地异常排查,且可以在未出现程序运行异常的情况下,进行预设级别的日志信息的写入,避免日志信息的冗余。
请参阅图1,为本申请实施例提供的日志管理方法的流程图,该日志管理方法有关的流程所定义的方法步骤可以由日志管理相关的电子设备实现。下面将对图1所示的具体流程进行详细阐述。
步骤S110,在程序启动运行的过程中,收集所有级别的日志信息并记录在内存中。
步骤S120,若程序运行出现异常,则提取出内存中记录的所有级别的日志信息以写入到日志文件。
步骤S130,若程序运行未出现异常,则提取内存中记录的预设级别的日志信息以写入到日志文件。
为了了解电子设备的运行状况,电子设备可配置记录程序运行过程中产生的日志信息的功能。日志信息可供用户进行程序运行的分析,包括如信息查询、分析、跟踪定位等分析处理。
本实施例中,所述的电子设备可以是智能手机、平板电脑、个人计算机等设备。所针对的程序可以是任意的可运行在电子设备上的程序,此外,也可以指代电子设备的操作系统。可以执行电子设备上安装的应用程序以及电子设备的操作系统的日志管理。
电子设备中所记录的日志,从日志内容详细程度可以分为error错误日志、info运行日志、debug调试日志和trace追踪日志等。从日志级别从低到高依次为trace日志、debug日志、info日志、error日志。
trace日志用于追踪程序的运行,在程序推进一下则相应具有一trace输出。debug日志可以用于指示细粒度信息事件,该级别的日志信息通常用于分析程序的调试过程。info日志用于指示粗粒度信息事件,此级别的日志信息通常突出强调程序的运行过程。error日志用于指示发生错误事件,该错误事件可以是不影响程序继续运行的,或者是导致程序退出的事件。
本实施例中,在程序启动开始运行的过程中,将程序运行相关的所有级别的日志信息先记录到内存中,但不写入日志文件。因为在程序运行时可能运行正常,也可能发生异常。在程序未运行结束时,不能确定日志文件需要记录的具体内容。在内存中记录所有级别的日志信息,可以保留全量的日志信息。
在程序出现异常时,则将记录的所有级别的日志信息写入到日志文件中,如此,有利于程序运行异常时取出详细的日志信息,不会出现有用日志信息丢失的问题。
而在程序未出现异常的情况下,可将内存中记录的预设级别的日志信息写入到日志文件中。其中,预设级别可根据用户需求进行设置,本实施例中,预设级别的日志信息可包括info日志、error日志。
本实施例提供的日志管理方案中,日志文件的写入不再受系统运行时日志级别设置的约束,可以根据程序运行情况自适应进行调整。如此,在程序运行出现异常的情况下,可以基于日志文件中所有级别的、详细的日志信息,帮助后续进行异常原因的准确排查。而在程序运行未出现异常的情况下,仅将预设级别的日志信息写入到日志文件,避免将全量日志信息进行写入所存在的日志冗余的问题。
在一种实现方式中,若程序运行未出现异常,在提取出内存中记录的预设级别的日志信息写入到日志文件后,可将内存中记录的、除预设级别之外的其他级别的日志信息删除。以避免其他级别的日志信息对内存的占用。
以上述为例,则其他级别的日志信息可以包括如trace日志、debug日志。
本实施例中,考虑到程序运行往往是持续的,程序运行过程中可能会重复出现相同的异常现象。若每次出现异常,均直接将所有的日志信息写入到日志文件,则日志文件中可能存有重复的日志信息,同样将导致日志信息的冗余。
基于上述考虑,请参阅图2,在一种可能的实现方式中,本实施例提供的日志管理方法中,在程序运行出现异常的情况下,还可以包括以下步骤:
步骤S210,判断程序运行出现的当前异常是否为首次异常,若不为首次异常,则执行以下步骤S220,若所述当前异常为首次异常,则执行步骤S120中提取出内存中记录的所有级别的日志信息以写入到日志文件的步骤。
步骤S220,基于所述当前异常获得异常统计信息,并将异常统计信息写入到日志文件中。
本实施例中,在程序运行过程中,无论程序是否出现异常,均将程序运行相关的所有日志信息记录在内存中。若程序运行出现异常,可以首先判断当前异常是否为首次异常。所谓的判断是否为首次异常,可以是判断是否为当前异常所属的异常类别下的首次异常。在当前异常为其所属异常类别下的首次异常时,表明在之前并未出现过相同的异常,日志文件中并未保存有相应的日志信息。因此,需要将当前异常的日志信息写入到日志文件。
而若当前异常不为其所属异常类别下的首次异常,由于首次异常的异常信息会被写入到日志文件中,表明当前日志文件中已保存有该异常类别下的异常信息。而该相同异常类别下的异常信息可供后续的异常排查所需,因此,在此情形下,可以仅基于当前异常获得异常统计信息,并将异常统计信息写入到日志文件中。而无需将当前异常的所有日志信息写入到日志文件中,以避免日志文件中重复日志信息过多,造成的信息冗余的问题。
本实施例中,所述的异常统计信息可包括错误码、异常产生原因、异常发生时间、异常发生次数等信息。将这些简要的异常统计信息写入到日志文件中,便于后续对异常的全局分析。
通过上述进行当前异常是否为首次异常的判断,可以避免在日志文件中重复写入相同的日志信息,避免浪费磁盘空间。
请参阅图3,本实施例中,在上述步骤S210中判断程序运行出现的当前异常是否为首次异常时,可以通过以下方式实现:
步骤S211,获取所述当前异常的异常产生原因和程序调用的链路信息。
步骤S212,根据所述异常产生原因和链路信息确定所述当前异常所属的目标异常类别。
步骤S213,检测所述日志文件中是否存在所述目标异常类别的日志信息,若存在,则执行以下步骤S214,若不存在,则执行以下步骤S215。
步骤S214,判定所述当前异常不是首次异常。
步骤S215,判定所述当前异常为首次异常。
本实施例中,可预先结合不同的异常产生原因和不同的程序调用的链路信息,对异常进行分类,并将异常产生原因和程序调用链路信息和不同的异常类别进行关联。具有相同异常产生原因和相同程序调用的链路信息的异常可以归为同一类异常。其中,程序调用的链路信息中包含程序执行的顺序以及此顺序中各个步骤的具体程序代码。
在实施时,则可以基于当前异常的异常产生原因和程序调用的链路信息确定当前异常所属的目标异常类别。
在一种实现方式中,可以检测日志文件中是否有与目标异常类别对应的异常信息,若有,则表征当前异常并非是首次异常。
在另一种实现方式中,每次进行异常记录时,可将异常所属的类别进行记录。后续直接查询记录的类别信息即可判断当前异常是否为首次异常。
本实施例中,结合异常产生原因和程序调用的链路信息可以准确地确定程序所属的异常类别,以便于当前异常是否为首次异常的判断。
本实施例中,程序的运行涉及到多个功能层级,在程序运行出现异常,且当前异常为首次异常时,可通过以下方式进行日志信息的提取和写入,请结合参阅图4:
步骤S121,若程序运行出现异常,则终止程序运行,并从所述多个功能层级中定位到发生异常的功能层级。
步骤S122,提取出内存中记录的、所述发生异常的功能层级的所有级别的日志信息,以写入到日志文件。
本实施例中,程序的处理逻辑可以根据功能解耦分为接口服务功能层、业务逻辑功能层、数据访问功能层和外部接口访问功能层。
其中,接口服务功能层用于提供被调用的接口,供其他系统调用使用。业务逻辑功能层用于向上承接接口服务功能层,向下对接数据访问功能层,并且,业务逻辑的处理也在该功能层。数据访问功能层用于向上承接业务逻辑功能层,向下对接各种存储系统的数据交互。其中,存储系统包括关系型数据库、非关系型数据库、文件系统等。
外部接口访问功能层用于向上承接业务逻辑功能层、向下对接各种外部系统,通过接口的方式与外部系统进行数据交互。
根据上述功能层次的划分,相应地,程序运行过程中的日志信息也划分为接口服务日志、业务逻辑日志、数据访问日志和外部接口访问日志。程序可根据代码所在的层次记录相应的日志。
本实施例中,各类日志信息可包括日志时间、逻辑层、日志级别、方法和业务日志。其中,日志时间为日志记录的时间,逻辑层可记录日志的程序所在的逻辑层次。日志级别即可记录日志时所使用的日志级别。方法可记录日志的方法名、包名和代码行号。业务日志可表征代码开发时根据目的不同记录的日志信息。
在程序运行出现异常时,可能是执行过程中的某个功能层级发生异常,而其他功能层级未发生异常。因此,可定位到发生异常的功能层级,并提取发生异常的功能层级的所有级别的日志信息并写入到日志文件。
本实施例中,可以将异常定位到具体的功能层级,提高后续异常排查的指向性。
本实施例中,可以获取程序运行出现异常时捕获的异常信息,根据异常信息中的堆栈信息定位到发生异常的功能层级。由上述可知,异常信息中包含程序调用的链路信息,基于链路信息可以确定程序执行的顺序以及此顺序中各个步骤的具体程序代码。具体程序代码可存放在堆栈中,程序代码可指向相应的功能层级。因此,可以基于堆栈信息定位到发生异常的功能层级。
本实施例中,通过堆栈信息中程序运行异常的步骤的具体程序代码,可准确定位到异常的功能层级。
此外,请参阅图5,上述步骤S120还可包括以下步骤:
步骤S123,针对所述多个功能层级中未发生异常的功能层级,提取出内存中记录的所述未发生异常的功能层级的预设级别的日志信息,写入到日志文件。
步骤S124,将所述内存中记录的、所述未发生异常的功能层级的其他级别的日志信息删除。
而在程序出现异常的情况下,对于其中未发生异常的功能层级,后续无需对这些功能层级的执行过程进行异常排查,因此,可以仅将这些功能层级的预设级别的日志信息写入到日志文件,并将内存中其他级别的日志信息删除。
本实施例中,针对未发生异常的功能层级仅提取预设级别的日志信息写入到日志文件,可以进一步地降低对磁盘空间的占用。
本实施例中,若程序运行直至结束未出现异常,则上述步骤S130中提取预设级别的日志信息写入到日志文件的步骤,可通过以下方式实现,请结合参阅图6:
步骤S131,若程序运行未出现异常,则至程序运行结束后,根据内存记录的各所述日志信息具有的逻辑层次信息,确定分别与各所述功能层级对应的日志信息。
步骤S132,针对各所述功能层级对应的日志信息,提取出日志信息中预设级别的日志信息以写入到日志文件。
本实施例中,由上述可知,各类日志信息中包括逻辑层信息,该逻辑层信息用于记录日志的程序所在的逻辑层次,根据逻辑层次信息则可以在程序运行的所有日志中确定出分别与各个功能层级对应的日志信息。
如此,在执行时,则可以分别针对各个功能层级的日志信息,从中提取出预设级别的日志信息以写入到日志文件。
通过这种方式,区分与各功能层级对应的日志信息,可便于执行过程中预设级别日志信息的提取和写入。
请参阅图7,本申请实施例还提供一种电子设备。图7是根据一示例性实施例示出的一种电子设备的框图。例如,电子设备可以被提供为一智能手机、个人计算机、平板电脑等设备。参照图7,电子设备包括处理器120,其数量可以为一个或多个,以及存储器110,用于存储可由处理器120执行的计算机程序。存储器110中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器120可以被配置为执行该计算机程序,以执行上述的日志管理方法。
另外,电子设备还可以包括电源组件130和通信组件140,该电源组件130可以被配置为执行电子设备的电源管理,该通信组件140可以被配置为实现电子设备的通信,例如,有线或无线通信。此外,该电子设备还可以包括输入/输出接口150。电子设备可以操作基于存储在存储器110的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
请参阅图8,本申请实施例还提供一种日志管理装置160,该日志管理装置160可以理解为上述电子设备,或电子设备的处理器120,也可以理解为独立于上述电子设备或处理器120之外的在电子设备控制下实现上述日志管理方法的软件功能模块。
如图8所示,上述日志管理装置160可以包括收集模块161、第一提取模块162和第二提取模块163。下面分别对该日志管理装置160的各个功能模块的功能进行详细阐述。
收集模块161,用于在程序启动运行的过程中,收集所有级别的日志信息并记录在内存中;
可以理解,该收集模块161可以用于执行上述步骤S110,关于该收集模块161的详细实现方式可以参照上述对步骤S110有关的内容。
第一提取模块162,用于在程序运行出现异常时,提取出内存中记录的所有级别的日志信息以写入到日志文件;
可以理解,该第一提取模块162可以用于执行上述步骤S120,关于该第一提取模块162的详细实现方式可以参照上述对步骤S120有关的内容。
第二提取模块163,用于在程序运行未出现异常时,提取内存中记录的预设级别的日志信息以写入到日志文件。
可以理解,该第二提取模块163可以用于执行上述步骤S130,关于该第二提取模块163的详细实现方式可以参照上述对步骤S130有关的内容。
在一种可能的实现方式中,上述第二提取模块163还可以用于:
将内存中记录的、除所述预设级别之外的其他级别的日志信息删除。
在一种可能的实现方式中,所述日志管理装置160还可以包括判断模块,该判断模块具体可以用于:
在程序运行出现异常时,判断程序运行出现的当前异常是否为首次异常,若不为首次异常,则基于所述当前异常获得异常统计信息,并将异常统计信息写入到日志文件中;
若所述当前异常为首次异常,则执行所述提取出内存中记录的所有级别的日志信息以写入到日志文件的步骤。
在一种可能的实现方式中,上述判断模块具体可以用于:
获取所述当前异常的异常产生原因和程序调用的链路信息;
根据所述异常产生原因和链路信息确定所述当前异常所属的目标异常类别;
检测所述日志文件中是否存在所述目标异常类别的日志信息,若存在,则判定所述当前异常不是首次异常。
在一种可能的实现方式中,所述程序的运行涉及多个功能层级;上述第一提取模块162具体可以用于:
若程序运行出现异常,则终止程序运行,并从所述多个功能层级中定位到发生异常的功能层级;
提取出内存中记录的、所述发生异常的功能层级的所有级别的日志信息,以写入到日志文件。
在一种可能的实现方式中,上述第一提取模块162具体还可以用于:
针对所述多个功能层级中未发生异常的功能层级,提取出内存中记录的所述未发生异常的功能层级的预设级别的日志信息,写入到日志文件;
将所述内存中记录的、所述未发生异常的功能层级的其他级别的日志信息删除。
在一种可能的实现方式中,上述第一提取模块162具体可以用于:
获取程序运行出现异常时捕获的异常信息;
根据所述异常信息中的堆栈信息定位到发生异常的功能层级。
在一种可能的实现方式中,上述第二提取模块163具体可以用于:
若程序运行未出现异常,则至程序运行结束后,根据内存记录的各所述日志信息具有的逻辑层次信息,确定分别与各所述功能层级对应的日志信息;
针对各所述功能层级对应的日志信息,提取出日志信息中预设级别的日志信息以写入到日志文件。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器110,上述程序指令可由电子设备的处理器120执行以完成上述的日志管理方法。
具体地,该计算机可读存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该计算机可读存储介质上的计算机程序被运行时,能够执行上述日志管理方法。关于计算机可读存储介质中的及其可执行指令被运行时,所涉及的过程,可以参照上述方法实施例中的相关说明,这里不再详述。
综上所述,本申请实施例提供的日志管理方法、装置、电子设备和可读存储介质,在程序启动运行过程中,先将所有级别的日志信息记录到内存中,若程序运行出现异常,则将内存中所有级别的日志信息写入到日志文件。若程序运行未出现异常,则提取出内存中的预设级别的日志信息写入到日志文件。如此,在程序异常时,可以记录所有级别的日志信息到日志文件,保障后续异常排查的顺利执行,并且,在程序未出现异常时,仅将预设级别的日志信息写入到日志文件,可避免日志文件中日志信息的冗余、避免占用过多存储资源。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种日志管理方法,其特征在于,所述方法包括:
在程序启动运行的过程中,收集所有级别的日志信息并记录在内存中;
若程序运行出现异常,则提取出内存中记录的所有级别的日志信息以写入到日志文件;
若程序运行未出现异常,则提取内存中记录的预设级别的日志信息以写入到日志文件。
2.根据权利要求1所述的日志管理方法,其特征在于,所述提取内存中记录的预设级别的日志信息以写入到日志文件的步骤之后,所述方法还包括:
将内存中记录的、除所述预设级别之外的其他级别的日志信息删除。
3.根据权利要求1所述的日志管理方法,其特征在于,在程序运行出现异常时,所述方法还包括:
判断程序运行出现的当前异常是否为首次异常,若不为首次异常,则基于所述当前异常获得异常统计信息,并将异常统计信息写入到日志文件中;
若所述当前异常为首次异常,则执行所述提取出内存中记录的所有级别的日志信息以写入到日志文件的步骤。
4.根据权利要求3所述的日志管理方法,其特征在于,所述判断程序运行出现的当前异常是否为首次异常的步骤,包括:
获取所述当前异常的异常产生原因和程序调用的链路信息;
根据所述异常产生原因和链路信息确定所述当前异常所属的目标异常类别;
检测所述日志文件中是否存在所述目标异常类别的日志信息,若存在,则判定所述当前异常不是首次异常。
5.根据权利要求1所述的日志管理方法,其特征在于,所述程序的运行涉及多个功能层级;
所述若程序运行出现异常,则提取出内存中记录的所有级别的日志信息以写入到日志文件的步骤,包括:
若程序运行出现异常,则终止程序运行,并从所述多个功能层级中定位到发生异常的功能层级;
提取出内存中记录的、所述发生异常的功能层级的所有级别的日志信息,以写入到日志文件。
6.根据权利要求5所述的日志管理方法,其特征在于,所述若程序运行出现异常,则提取出内存中记录的所有级别的日志信息以写入到日志文件的步骤,还包括:
针对所述多个功能层级中未发生异常的功能层级,提取出内存中记录的所述未发生异常的功能层级的预设级别的日志信息,写入到日志文件;
将所述内存中记录的、所述未发生异常的功能层级的其他级别的日志信息删除。
7.根据权利要求5所述的日志管理方法,其特征在于,所述从所述多个功能层级中定位到发生异常的功能层级的步骤,包括:
获取程序运行出现异常时捕获的异常信息;
根据所述异常信息中的堆栈信息定位到发生异常的功能层级。
8.根据权利要求5所述的日志管理方法,其特征在于,所述若程序运行未出现异常,则提取内存中记录的预设级别的日志信息以写入到日志文件的步骤,包括:
若程序运行未出现异常,则至程序运行结束后,根据内存记录的各所述日志信息具有的逻辑层次信息,确定分别与各所述功能层级对应的日志信息;
针对各所述功能层级对应的日志信息,提取出日志信息中预设级别的日志信息以写入到日志文件。
9.一种日志管理装置,其特征在于,所述装置包括:
收集模块,用于在程序启动运行的过程中,收集所有级别的日志信息并记录在内存中;
第一提取模块,用于在程序运行出现异常时,提取出内存中记录的所有级别的日志信息以写入到日志文件;
第二提取模块,用于在程序运行未出现异常时,提取内存中记录的预设级别的日志信息以写入到日志文件。
10.一种电子设备,其特征在于,包括一个或多个存储介质和一个或多个与存储介质通信的处理器,一个或多个存储介质存储有处理器可执行的机器可执行指令,当电子设备运行时,处理器执行所述机器可执行指令,以执行权利要求1-8中任意一项所述的方法步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有机器可执行指令,所述机器可执行指令被执行时实现权利要求1-8中任意一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111035619.2A CN113468029A (zh) | 2021-09-06 | 2021-09-06 | 日志管理方法、装置、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111035619.2A CN113468029A (zh) | 2021-09-06 | 2021-09-06 | 日志管理方法、装置、电子设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113468029A true CN113468029A (zh) | 2021-10-01 |
Family
ID=77867485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111035619.2A Pending CN113468029A (zh) | 2021-09-06 | 2021-09-06 | 日志管理方法、装置、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113468029A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130824A (zh) * | 2023-01-10 | 2023-11-28 | 荣耀终端有限公司 | 一种处理异常的方法、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090228745A1 (en) * | 2008-03-10 | 2009-09-10 | Fujitsu Limited | Error backup method |
CN110932910A (zh) * | 2019-12-05 | 2020-03-27 | 锐捷网络股份有限公司 | 一种软件故障的日志记录方法及装置 |
CN111124727A (zh) * | 2019-12-12 | 2020-05-08 | 京信通信系统(中国)有限公司 | 日志处理方法、装置、设备和存储介质 |
-
2021
- 2021-09-06 CN CN202111035619.2A patent/CN113468029A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090228745A1 (en) * | 2008-03-10 | 2009-09-10 | Fujitsu Limited | Error backup method |
CN110932910A (zh) * | 2019-12-05 | 2020-03-27 | 锐捷网络股份有限公司 | 一种软件故障的日志记录方法及装置 |
CN111124727A (zh) * | 2019-12-12 | 2020-05-08 | 京信通信系统(中国)有限公司 | 日志处理方法、装置、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
张育军 等: "《上海证券交易所联合研究报告 2011 证券信息前沿技术专集》", 30 November 2012, 上海人民出版社 * |
恒逸资讯 等: "《SQL Server 2000数据转换服务》", 31 January 2003, 中国铁道出版社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130824A (zh) * | 2023-01-10 | 2023-11-28 | 荣耀终端有限公司 | 一种处理异常的方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284269B (zh) | 异常日志分析方法、装置、存储介质及服务器 | |
US10102113B2 (en) | Software test automation systems and methods | |
US8448138B2 (en) | Recording user-driven events within a computing system | |
CN113708986B (zh) | 服务器监控装置、方法及计算机可读存储介质 | |
CN111897696A (zh) | 服务器集群硬盘状态检测方法、装置、电子设备及存储介质 | |
CN111143103A (zh) | 一种关联关系确定方法、装置、设备及可读存储介质 | |
CN112988503A (zh) | 分析方法、分析装置、电子装置和存储介质 | |
CN112650613B (zh) | 一种错误信息处理方法、装置、电子设备及存储介质 | |
CN112306833A (zh) | 应用程序的崩溃统计方法、装置、计算机设备及存储介质 | |
CN113468029A (zh) | 日志管理方法、装置、电子设备和可读存储介质 | |
CN113590405A (zh) | 硬盘错误的检测方法、装置、存储介质和电子装置 | |
CN111694724B (zh) | 分布式表格系统的测试方法、装置、电子设备及存储介质 | |
CN111784176A (zh) | 一种数据处理方法、装置、服务器及介质 | |
CN114500249A (zh) | 一种根因定位方法和装置 | |
CN112162954B (zh) | 用户操作日志生成、路径的定位方法、装置、设备及介质 | |
CN115757138A (zh) | 脚本异常原因的确定方法、装置、存储介质以及电子设备 | |
CN112114987B (zh) | 运行环境的异常检测方法、装置、智能终端及存储介质 | |
CN115098378A (zh) | 基于异常断点分类聚合日志片段的方法、装置 | |
CN115168124A (zh) | 硬盘并发执行多个文件的稳定性测试方法、装置、计算机设备及介质 | |
CN112860469A (zh) | 一种卡顿日志信息收集方法、装置、设备及存储介质 | |
CN112631929A (zh) | 测试用例生成方法、装置、存储介质及电子设备 | |
CN111813695A (zh) | 代码检测方法、装置、介质及电子设备 | |
CN113760696A (zh) | 一种程序问题定位方法、装置、电子设备和存储介质 | |
CN112286804B (zh) | 系统的调试方法、装置、设备和介质 | |
CN114884807B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211001 |