CN107577579A - 一种日志记录方法及装置 - Google Patents
一种日志记录方法及装置 Download PDFInfo
- Publication number
- CN107577579A CN107577579A CN201710835006.4A CN201710835006A CN107577579A CN 107577579 A CN107577579 A CN 107577579A CN 201710835006 A CN201710835006 A CN 201710835006A CN 107577579 A CN107577579 A CN 107577579A
- Authority
- CN
- China
- Prior art keywords
- configuration
- current
- daily record
- thread
- log
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种日志记录方法及装置,其中所述方法包括:1)运行应用程序;2)启动日志记录操作;3)生成用于记录当前事件的当前日志记录任务;4)依据所述当前日志记录任务将日志内容写入日志文件中;5)结束日志记录操作。应用本发明按功能模块和按线程的日志控制方法能有效控制日志的输出范围和输出级别,协助开发或维护人员更好的查找和定位问题日志,排除冗余日志的干扰,快速的解决应用程序存在的问题。
Description
技术领域
本发明涉及信息记录技术领域,具体涉及一种日志记录方法及装置。
背景技术
系统日志是记录系统运行事件的重要手段,也是定位问题的有效工具。正确的记录和使用系统日志,可以协助开发和维护人员详细观察系统的运行情况,判断系统运行是否正常,通过分析问题日志,快速的定位和解决问题。
现有通信系统中,应用程序或进程通过系统日志接口将日志内容以一定的格式记录到日志文件中,参考图1,日志记录过程包括:
步骤101,应用程序运行;
步骤102,所述应用程序运行过程中执行日志记录任务;
步骤103,所述日志记录任务被日志记录模块处理;
步骤104,所述日志记录模块将日志写入日志文件中;
所述系统日志接口通常是由syslogd提供的函数接口,系统环境下运行syslogd进程,应用程序或进程的日志记录操作由syslogd写入日志文件中。
所述日志内容的格式包括系统时间、当前用户名、进程标识、日志级别和具体日志信息等。其中,系统时间表示该条日志的创建日期和时间(包括:年月日时分秒),当前用户名表示该条日志所属用户的用户名,进程标识表示该条日志由哪个应用程序或进程进程记录,日志级别表示该条日志属于的日志级别(包括:LOG_EMERG、LOG_ALERT、LOG_CRIT、LOG_ERR、LOG_WARNING、LOG_NOTICE、LOG_INFO、LOG_DEBUG),具体日志信息是应用程序或进程运行过程中记录的具体的日志内容。所有日志内容以时间排序的方式写入日志文件中,查看日志文件时,需要根据系统时间、当前用户名、进程标识、日志级别和具体日志信息锁定一条日志。
现有技术的所述系统日志的记录方法虽然可以将各进程和各级别日志内容全部记录到日志文件中,但是,存在无法按照单个线程的方式来调阅日志输出的问题,不方便系统开发和维护人员通过日志记录查找和定位问题。
例如,在应用程序或进程开发过程中,研发人员和系统维护人员通常需要分模块开发,分模块调试,并且经常要面对多线程应用程序或进程的开发和维护,在这种情况下,如果能够提供单个线程的日志输出,方便进行单线程调试,将会为系统开发和维护人员提供极大地方便、会节省大量时间。因此,研究一种能够方便进行单线程调试的日志记录方法具有重大意义。
发明内容
本发明要解决的技术问题是针对现有技术存在的上述缺陷,提供一种日志记录方案,该方案通过按功能模块和按线程的日志控制方法有效控制日志的输出范围和输出级别,协助开发或维护人员更好的查找和定位问题日志。
为解决上述问题,本发明的技术方案为:
根据本发明的一个方面,提供了一种日志记录方法,包括:
1)运行应用程序;
2)启动日志记录操作;
3)生成用于记录当前事件的当前日志记录任务;
4)依据所述当前日志记录任务将日志内容写入日志文件中;
5)结束日志记录操作。
优选的,所述步骤3)中生成用于记录当前事件的当前日志记录任务的具体流程是:
3.1)将运行的应用程序分别划分为若干功能模块的组合和若干个线程,所述功能模块是运行的应用程序或进程中一类功能的集合;
3.2)获取当前功能模块的配置,所述当前功能模块的配置标识了当前功能模块的日志配置;
3.3)依据所述当前功能模块的配置,判断当前功能模块的日志输出是否使能,如果使能执行步骤3.4),否则执行步骤3.6),所述使能表示日志控制开关打开,允许日志输出;
3.4)依据所述当前功能模块的配置,判断当前功能模块的日志输出级别是否有效,如果有效执行步骤3.5),否则执行步骤3.13),所述有效表示日志级别在现有日志级别范围内;
3.5)将当前事件按照所述当前功能模块的配置生成当前日志记录任务;
3.6)获取线程配置列表,所述线程配置列表标识了当前应用程序或进程中所有线程的日志配置;
3.7)获取当前线程ID,所述当前线程ID是所述线程的线程号;
3.8)依据所述线程配置列表和当前线程ID,判断线程配置列表中是否存在当前线程ID对应的配置,如果存在执行步骤3.9),否则执行步骤3.13);
3.9)获取当前线程的配置,所述当前线程的配置标识了当前线程的日志配置;
3.10)依据所述当前线程的配置,判断当前线程的日志输出是否使能,如果使能执行步骤3.11),否则执行步骤3.13);
3.11)依据所述当前线程的配置,判断当前线程的日志输出级别是否有效,如果有效执行步骤3.12),否则执行步骤3.13);
3.12)将当前事件按照所述当前线程的配置生成当前日志记录任务;
3.13)结束并退出所述流程。
优选的,所述步骤3.2)中获取当前功能模块的配置之前,以及步骤3.6)获取线程配置列表之前,均还包括:更新配置文件。
优选的,所述更新配置文件的方法包括:
a.读取配置文件,所述配置文件包含所有运行应用程序或进程的所有日志配置;
b.依据所述读取的配置文件,解析配置文件到实时配置列表,所述实时配置列表包含所有应用程序或进程的最新日志配置;
c.获取现有配置列表,所述现有配置列表包含当前所有运行应用程序或进程的日志配置,所述有配置列表中的日志配置包含按功能模块分类的日志配置和按线程分类的日志配置;
d.依据实时配置列表和现有配置列表的日志配置,判断是否有更新的日志配置,如果有则执行步骤e,否则执行步骤a重新运行配置更新任务;
e.将对应日志配置按功能模块分类和按线程分类更新到现有配置列表,更新完毕执行步骤a重新运行配置更新任务。
根据本发明的另一个方面,提供了一种日志记录装置,包括:
运行模块,用于运行应用程序;
启动模块,用于启动日志记录操作;
任务生成模块,用于生成用于记录当前事件的当前日志记录任务;
日志记录模块,用于依据所述当前日志记录任务将日志内容写入日志文件中;
结束模块,用于结束日志记录操作。
优选的,所述任务生成模块具体包括:
划分模块,用于将运行的应用程序或进程分别划分为若干功能模块的组合和若干个线程,所述功能模块是运行的应用程序或进程中一类功能的集合;
第一获取模块,用于获取当前功能模块的配置,所述当前功能模块的配置标识了当前功能模块的日志配置;
第一判断模块,用于依据所述当前功能模块的配置,判断当前功能模块的日志输出是否使能,所述使能表示日志控制开关打开,允许日志输出;
第二判断模块,用于依据所述当前功能模块的配置,判断当前功能模块的日志输出级别是否有效,所述有效表示日志级别在现有日志级别范围内;
第一任务生成模块,用于将当前事件按照所述当前功能模块的配置生成当前日志记录任务;
第二获取模块,用于获取线程配置列表,所述线程配置列表标识了当前运行应用程序或进程中所有线程的日志配置;以及,获取当前线程ID,所述当前线程ID是所述线程的线程号;
第三判断模块,用于依据所述线程配置列表和当前线程ID,判断线程配置列表中是否存在当前线程ID对应的配置;
第三获取模块,用于获取当前线程的配置,所述当前线程的配置标识了当前线程的日志配置;
第四判断模块,用于依据所述当前线程的配置,判断当前线程的日志输出是否使能;
第五判断模块,用于依据所述当前线程的配置,判断当前线程的日志输出级别是否有效;
第二任务生成模块,用于将当前事件按照所述当前线程的配置生成当前日志记录任务;
退出模块,用于结束并退出所述流程。
优选的,所述任务生成模块还包括:
更新模块,用于在获取当前功能模块的配置以及线程配置列表之前,更新配置文件。
优选的,所述更新模块具体用于执行以下流程:
a.读取配置文件,所述配置文件包含所有运行应用程序或进程的所有日志配置;
b.依据所述读取的配置文件,解析配置文件到实时配置列表,所述实时配置列表包含所有应用程序或进程的最新日志配置;
c.获取现有配置列表,所述现有配置列表包含当前所有运行应用程序或进程的日志配置,所述有配置列表中的日志配置包含按功能模块分类的日志配置和按线程分类的日志配置;
d.依据实时配置列表和现有配置列表的日志配置,判断是否有更新的日志配置,如果有则执行步骤e,否则执行步骤a重新运行配置更新任务;
e.将对应日志配置按功能模块分类和按线程分类更新到现有配置列表,更新完毕执行步骤a重新运行配置更新任务。
本发明具体如下优点和有益效果:
一、按功能模块控制:单个进程中的不同功能模块可以单独控制日志是否输出到文件,为开发和维护人员调试单个功能模块提供了很好的帮助。
二、按线程控制:单个线程可以统一控制该线程中的所有日志是否输出到文件,为开发和维护人员调试单个线程提供了很好的帮助。
三、配置文件:应用程序的开发或维护人员可以通过改变配置文件控制日志输出是否使能和日志输出级别。
四、使用JSON作为日志配置格式的方法,方便开发和维护人员快速的查看和修改配置。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要的附图做简单的介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中日志记录的流程图;
图2为本发明日志记录方法的流程图;
图3为本发明日志记录方法中生成日志记录任务的方法流程图;
图4为本发明配置文件更新的方法流程图;
图5为本发明日志记录装置的组成结构框图;
图6为本发明日志记录装置中任务生成模块的组成结构框图。
具体实施方式
下面结合说明书附图对本发明实施例的具体实施方式作详细说明。
图2为本发明日志记录方法的流程图,如图2所示,该日志记录方法包括:
步骤201,运行应用程序;
所述应用程序即进程,例如可以是QQ聊天工具、暴风影音播放器、Microsoftoffice软件以及有道词典等等。
步骤202,启动日志记录操作;
应用程序运行后,即启动日志记录操作。
步骤203,生成用于记录当前事件的当前日志记录任务;
所述的日志记录任务是通过调用重新封装的syslog函数实现的。根据记录日志配置参数的配置文件确定是否修改所述的日志记录任务,生成用于记录当前的事件的当前日志记录任务。在产生需要记入日志中的事件时,由该步骤根据当前的日志配置信息,决定该事件记入哪个进程、哪个功能模块,或决定该事件记入哪个线程的哪个级别的日志中。
本实施方式中,优选采用JSON格式的配置文件,本发明还可根据需要采用其他类型的配置文件,其并不受限于本具体实施方式。
步骤204,依据所述当前日志记录任务将日志内容写入日志文件中;
当生成用于记录当前事件的当前日志记录任务后,则依据该日志记录任务,将包含当前事件的日志内容写入到日志文件中。
步骤205,结束日志记录操作。
作为优选的实施方式,所述步骤203中生成用于记录当前事件的当前日志记录任务的具体流程是:
步骤203.1,将应用程序或进程分别划分为若干功能模块的组合和若干个线程,所述功能模块是应用程序或进程中一类功能的集合;
将应用程序或进程分别划分为若干功能模块的组合和若干个线程的组合,即若干功能模块构成一个完整的应用程序或进程;所述功能模块是应用程序或进程中一类功能的集合,单个线程可以包含一个完整的业务处理流程。
步骤203.2获取当前功能模块的配置,所述当前功能模块的配置标识了当前功能模块的日志配置;
所述当前功能模块的配置可以通过解析JSON配置文件得到,其中,包含功能模块标识或名称、日志输出是否使能和日志输出级别等信息。
步骤203.3依据所述当前功能模块的配置,判断当前功能模块的日志输出是否使能,如果使能执行步骤203.4,否则执行步骤203.6,所述使能表示日志控制开关打开,允许日志输出;
所述使能表示日志控制开关打开,允许日志输出;相反,没有使能则表示日志控制开关关闭,禁止日志输出。
步骤203.4依据所述当前功能模块的配置,判断当前功能模块的日志输出级别是否有效,如果有效执行步骤203.5,否则执行步骤203.13,所述有效表示日志级别在现有日志级别范围内;
所述有效表示日志级别在现有日志级别范围内;相反,无效则表示日志级别不在现有日志级别范围内。
在本实施方式中,所述现有日志级别可以包括8个,分别是:LOG_EMERG、LOG_ALERT、LOG_CRIT、LOG_ERR、LOG_WARNING、LOG_NOTICE、LOG_INFO、LOG_DEBUG。
作为说明,根据需要,所述日志级别也可以进行调整,可以包含更多的级别,或较少的级别。
步骤203.5,将当前事件按照所述当前功能模块的配置生成当前日志记录任务;
上述步骤中,在确定了当前功能模块的日志输出使能以及日志输出级别有效后,即将需要记录的当前事件按照当前功能模块的配置进行处理,生成当前日志记录任务。
步骤203.6,获取线程配置列表,所述线程配置列表标识了当前运行的应用程序或进程中所有线程的日志配置;
所述线程配置列表是通过解析JSON配置文件得到的,JSON配置文件中包含了所有线程的日志配置信息。
这里需要说明的是,在本实施方式中,所述的进程是一个独立的应用程序,所述线程是进程内的一个独立任务。
步骤203.7,获取当前线程ID,所述当前线程ID是所述线程的线程号;
所述当前线程ID是该线程的线程号,由操作系统的标准函数接口提供。
步骤203.8,依据所述线程配置列表和当前线程ID,判断线程配置列表中是否存在当前线程ID对应的配置,如果存在执行步,203.9,否则执行步骤203.13;
如果存在表示线程配置列表中配置了对应当前线程ID的日志配置信息,如果不存在表示线程配置列表中没有配置对应当前线程ID的日志配置信息。
步骤203.9,获取当前线程的配置,所述当前线程的配置标识了当前线程的日志配置;
所述获取当前线程配置包含获取线程标识或名称、日志输出是否使能和日志输出级别等信息。
步骤203.10,依据所述当前线程的配置,判断当前线程的日志输出是否使能,如果使能执行步骤203.11,否则执行步骤203.13;
所述使能表示日志控制开关打开,允许日志输出;相反,没有使能则表示日志控制开关关闭,禁止日志输出。
步骤203.11,依据所述当前线程的配置,判断当前线程的日志输出级别是否有效,如果有效执行步骤203.12,否则执行步骤203.13;
所述有效表示日志级别在现有日志级别范围内;相反,无效则表示日志级别不在现有日志级别范围内。
在本实施方式中,所述现有的日志级别可以包括8个,分别是:LOG_EMERG、LOG_ALERT、LOG_CRIT、LOG_ERR、LOG_WARNING、LOG_NOTICE、LOG_INFO、LOG_DEBUG。
作为说明,根据需要,所述日志级别也可以进行调整,可以包含更多的级别,或较少的级别。
步骤203.12,将当前事件按照所述当前线程的配置生成当前日志记录任务;
步骤203.13,结束并退出所述流程。
在本发明的上述实施方式中,参考图3,步骤203.2获取的当前功能模块配置,如果在步骤203.3判断当前功能模块日志输出使能,则日志输出不再受当前线程配置所控制,防止因当前线程配置而输出重复日志。举例而言,如果一个日志记录任务既配置了按功能模块输出使能,又配置了按线程输出使能,则日志只输出一次。
在本发明的上述实施方式中,步骤203.2所述当前功能模块配置和步骤203.9所述当前线程配置,标识了日志控制方法的要素,是由JSON格式的配置文件解析得到的,开发或维护人员可以通过JSON配置文件,即可获得所述的功能模块和线程的日志配置,控制日志输出是否使能和日志输出级别。
所述JSON配置文件为实时解析,通过对JSON配置文件的配置和内容修改后即可获得所述的功能模块和线程的日志配置,提供给步骤203.2和步骤203.9使用。所述JSON配置文件的解析和日志配置的更新采用独立的更新任务。参考图4,JSON配置文件和日志配置的更新方法可以包括如下步骤,
步骤401,读取配置文件,所述配置文件包含所有应用程序或进程的所有日志配置;
步骤402,依据所述读取的配置文件,解析配置文件到实时配置列表,所述实时配置列表包含所有应用程序或进程的最新日志配置;
步骤403,获取现有配置列表,所述现有配置列表包含当前所有应用程序或进程的日志配置,所述有配置列表中的日志配置包含按功能模块分类的日志配置和按线程分类的日志配置;
步骤404,依据实时配置列表和现有配置列表的日志配置,判断是否有更新的日志配置,如果有则执行步骤405,否则执行步骤401重新运行配置更新任务;
步骤405,将对应日志配置按功能模块分类和按线程分类更新到现有配置列表,更新完毕执行步骤401重新运行配置更新任务。
本发明所提供的日志记录方法,以syslogd为日志收集和重定向输出的后台进程,重新封装syslog函数,在应用程序和传统日志接口之间增加了任务生成模块。应用程序运行过程中,日志记录操作通过新封装的syslog函数,由任务生成模块决定该应用程序的哪个功能模块、哪个线程或哪个级别的日志是否输出到文件中,不同的功能模块应该使用当前功能模块的日志记录函数接口。
图5为本发明日志记录装置的组成结构框图,如图5所示,一种日志记录装置,包括:
运行模块510,用于运行应用程序;
所述应用程序即进程,例如可以是QQ聊天工具、暴风影音播放器、Microsoftoffice软件以及有道词典等等。
启动模块520,用于启动日志记录操作;
应用程序运行后,即启动日志记录操作。
任务生成模块530,用于生成用于记录当前事件的当前日志记录任务;
所述的日志记录任务是通过调用重新封装的syslog函数实现的。根据记录日志配置参数的配置文件确定是否修改所述的日志记录任务,生成用于记录当前的事件的当前日志记录任务。在产生需要记入日志中的事件时,由该步骤根据当前的日志配置信息,决定该事件记入哪个进程、哪个功能模块,或决定该事件记入哪个线程的哪个级别的日志中。
本实施方式中,优选采用JSON格式的配置文件,本发明还可根据需要采用其他类型的配置文件,其并不受限于本具体实施方式。
日志记录模块540,用于依据所述当前日志记录任务将日志内容写入日志文件中;
当生成用于记录当前事件的当前日志记录任务后,则依据该日志记录任务,将包含当前事件的日志内容写入到日志文件中。
结束模块550,用于结束日志记录操作。
如图6所示,所述任务生成模块530具体包括:
划分模块601,用于将运行的应用程序或进程分别划分为若干功能模块的组合和若干个线程,所述功能模块是运行的应用程序或进程中一类功能的集合;
将应用程序或进程分别划分为若干功能模块的组合和若干个线程的组合,即若干功能模块构成一个完整的应用程序或进程;所述功能模块是应用程序或进程中一类功能的集合,单个线程可以包含一个完整的业务处理流程。
第一获取模块602,用于获取当前功能模块的配置,所述当前功能模块的配置标识了当前功能模块的日志配置;
所述当前功能模块的配置可以通过解析JSON配置文件得到,其中,包含功能模块标识或名称、日志输出是否使能和日志输出级别等信息。
第一判断模块603,用于依据所述当前功能模块的配置,判断当前功能模块的日志输出是否使能,所述使能表示日志控制开关打开,允许日志输出;
所述使能表示日志控制开关打开,允许日志输出;相反,没有使能则表示日志控制开关关闭,禁止日志输出。
第二判断模块604,用于依据所述当前功能模块的配置,判断当前功能模块的日志输出级别是否有效,所述有效表示日志级别在现有日志级别范围内;
所述有效表示日志级别在现有日志级别范围内;相反,无效则表示日志级别不在现有日志级别范围内。
在本实施方式中,所述现有日志级别可以包括8个,分别是:LOG_EMERG、LOG_ALERT、LOG_CRIT、LOG_ERR、LOG_WARNING、LOG_NOTICE、LOG_INFO、LOG_DEBUG。
作为说明,根据需要,所述日志级别也可以进行调整,可以包含更多的级别,或较少的级别。
第一任务生成模块605,用于将当前事件按照所述当前功能模块的配置生成当前日志记录任务;
上述步骤中,在确定了当前功能模块的日志输出使能以及日志输出级别有效后,即将需要记录的当前事件按照当前功能模块的配置进行处理,生成当前日志记录任务。
第二获取模块606,用于获取线程配置列表,所述线程配置列表标识了当前运行应用程序或进程中所有线程的日志配置;以及,获取当前线程ID,所述当前线程ID是所述线程的线程号;
所述线程配置列表是通过解析JSON配置文件得到的,JSON配置文件中包含了所有线程的日志配置信息。
这里需要说明的是,在本实施方式中,所述的进程是一个独立的应用程序,所述线程是进程内的一个独立任务。
第三判断模块607,用于依据所述线程配置列表和当前线程ID,判断线程配置列表中是否存在当前线程ID对应的配置;
所述当前线程ID是该线程的线程号,由操作系统的标准函数接口提供。如果存在表示线程配置列表中配置了对应当前线程ID的日志配置信息,如果不存在表示线程配置列表中没有配置对应当前线程ID的日志配置信息。
第三获取模块608,用于获取当前线程的配置,所述当前线程的配置标识了当前线程的日志配置;
所述获取当前线程配置包含获取线程标识或名称、日志输出是否使能和日志输出级别等信息。
第四判断模块609,用于依据所述当前线程的配置,判断当前线程的日志输出是否使能;
所述使能表示日志控制开关打开,允许日志输出;相反,没有使能则表示日志控制开关关闭,禁止日志输出。
第五判断模块610,用于依据所述当前线程的配置,判断当前线程的日志输出级别是否有效;
所述有效表示日志级别在现有日志级别范围内;相反,无效则表示日志级别不在现有日志级别范围内。
在本实施方式中,所述现有的日志级别可以包括8个,分别是:LOG_EMERG、LOG_ALERT、LOG_CRIT、LOG_ERR、LOG_WARNING、LOG_NOTICE、LOG_INFO、LOG_DEBUG。
作为说明,根据需要,所述日志级别也可以进行调整,可以包含更多的级别,或较少的级别。
第二任务生成模块611,用于将当前事件按照所述当前线程的配置生成当前日志记录任务;
退出模块612,用于结束并退出所述流程。
作为优选的实施方式,所述任务生成模块还包括:
更新模块613,用于在获取当前功能模块的配置以及线程配置列表之前,更新配置文件。
优选的,所述更新模块具体用于执行以下流程:
a.读取配置文件,所述配置文件包含所有运行应用程序或进程的所有日志配置;
b.依据所述读取的配置文件,解析配置文件到实时配置列表,所述实时配置列表包含所有应用程序或进程的最新日志配置;
c.获取现有配置列表,所述现有配置列表包含当前所有运行应用程序或进程的日志配置,所述有配置列表中的日志配置包含按功能模块分类的日志配置和按线程分类的日志配置;
d.依据实时配置列表和现有配置列表的日志配置,判断是否有更新的日志配置,如果有则执行步骤e,否则执行步骤a重新运行配置更新任务;
e.将对应日志配置按功能模块分类和按线程分类更新到现有配置列表,更新完毕执行步骤a重新运行配置更新任务。
在本发明的实施方式中,参考图3,按功能模块控制日志输出的方法,为开发和维护人员调试单个功能模块提供了很好的帮助,因为多个功能模块构成一个完整的应用程序。
在本发明的实施方式中,参考图3,按线程控制日志输出的方法,为开发和维护人员调试单个线程提供了很好的帮助,单个线程可以包含一个完整的业务处理流程。完成单线程调试对于完成多线程调试打下了坚实的基础。
在本发明的实施方式中,参考图3,使用JSON作为日志配置格式的方法,方便开发和维护人员快速的查看和修改配置。
为了进一步说明本发明的具体实施方式,以一个应用程序为例,该应用程序是一个独立运行的进程,其中包含3个功能模块A、B、C和3个线程D、E、F。参考图2和图3,进一步应用本发明的任务生成模块完成日志控制功能。
所述3个功能模块A、B、C是3个不同的功能。
所述3个线程D、E、F是3个不同的业务处理流程。
依照上述方案,介绍以下2种日志控制方法的实际应用,默认所述3个功能模块A、B、C和3个线程D、E、F的日志输出均禁止,
第1种,开发和维护人员需要调试功能模块A,应用本发明,需要修改JSON配置文件中功能模块A的配置为日志输出使能,日志级别LOG_ERR。参考图4,JSON配置文件的修改部分被更新到配置列表中,参考图3,日志按功能模块配置控制输出日志到日志文件中。由于只有功能模块A的日志输出到日志文件中,开发和维护人员在日志文件中只会看到功能模块A的日志信息,日志数量较少,方便查看和定位问题日志;
所述功能模块A包含了一个功能模块的所有功能。
第2种,开发和维护人员需要调试线程D,应用本发明,需要修改JSON配置文件中线程D的配置为日志输出使能,日志级别LOG_ERR。参考图4,JSON配置文件的修改部分被更新到配置列表中,参考图3,日志按线程配置控制输出日志到文件中。由于只有线程D的日志输出到日志文件中,开发和维护人员在日志文件中只会看到线程D的日志信息,日志数量较少,方便查看和定位问题日志;
所述线程D包含了一个完整的业务流程。
应用本发明按功能模块和按线程的日志控制方法能有效控制日志的输出范围和输出级别,协助开发或维护人员更好的查找和定位问题日志,排除冗余日志的干扰,快速的解决应用程序存在的问题。
以上所述实施例仅表达了本发明的优选的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种日志记录方法,其特征在于,包括:
1)运行应用程序;
2)启动日志记录操作;
3)生成用于记录当前事件的当前日志记录任务;
4)依据所述当前日志记录任务将日志内容写入日志文件中;
5)结束日志记录操作。
2.如权利要求1所述的一种日志记录方法,其特征在于,所述步骤3)中生成用于记录当前事件的当前日志记录任务的具体流程是:
3.1)将运行的应用程序分别划分为若干功能模块的组合和若干个线程,所述功能模块是运行的应用程序或进程中一类功能的集合;
3.2)获取当前功能模块的配置,所述当前功能模块的配置标识了当前功能模块的日志配置;
3.3)依据所述当前功能模块的配置,判断当前功能模块的日志输出是否使能,如果使能执行步骤3.4),否则执行步骤3.6),所述使能表示日志控制开关打开,允许日志输出;
3.4)依据所述当前功能模块的配置,判断当前功能模块的日志输出级别是否有效,如果有效执行步骤3.5),否则执行步骤3.13),所述有效表示日志级别在现有日志级别范围内;
3.5)将当前事件按照所述当前功能模块的配置生成当前日志记录任务;
3.6)获取线程配置列表,所述线程配置列表标识了当前应用程序或进程中所有线程的日志配置;
3.7)获取当前线程ID,所述当前线程ID是所述线程的线程号;
3.8)依据所述线程配置列表和当前线程ID,判断线程配置列表中是否存在当前线程ID对应的配置,如果存在执行步骤3.9),否则执行步骤3.13);
3.9)获取当前线程的配置,所述当前线程的配置标识了当前线程的日志配置;
3.10)依据所述当前线程的配置,判断当前线程的日志输出是否使能,如果使能执行步骤3.11),否则执行步骤3.13);
3.11)依据所述当前线程的配置,判断当前线程的日志输出级别是否有效,如果有效执行步骤3.12),否则执行步骤3.13);
3.12)将当前事件按照所述当前线程的配置生成当前日志记录任务;
3.13)结束并退出所述流程。
3.如权利要求2所述的一种日志记录方法,其特征在于,所述步骤3.2)中获取当前功能模块的配置之前,以及步骤3.6)获取线程配置列表之前,均还包括:更新配置文件。
4.如权利要求3所述的一种日志记录方法,其特征在于,所述更新配置文件的方法包括:
a.读取配置文件,所述配置文件包含所有运行应用程序或进程的所有日志配置;
b.依据所述读取的配置文件,解析配置文件到实时配置列表,所述实时配置列表包含所有应用程序或进程的最新日志配置;
c.获取现有配置列表,所述现有配置列表包含当前所有运行应用程序或进程的日志配置,所述有配置列表中的日志配置包含按功能模块分类的日志配置和按线程分类的日志配置;
d.依据实时配置列表和现有配置列表的日志配置,判断是否有更新的日志配置,如果有则执行步骤e,否则执行步骤a重新运行配置更新任务;
e.将对应日志配置按功能模块分类和按线程分类更新到现有配置列表,更新完毕执行步骤a重新运行配置更新任务。
5.一种日志记录装置,其特征在于,包括:
运行模块,用于运行应用程序;
启动模块,用于启动日志记录操作;
任务生成模块,用于生成用于记录当前事件的当前日志记录任务;
日志记录模块,用于依据所述当前日志记录任务将日志内容写入日志文件中;
结束模块,用于结束日志记录操作。
6.如权利要求5所述的一种日志记录装置,其特征在于,所述任务生成模块具体包括:
划分模块,用于将运行的应用程序或进程分别划分为若干功能模块的组合和若干个线程,所述功能模块是运行的应用程序或进程中一类功能的集合;
第一获取模块,用于获取当前功能模块的配置,所述当前功能模块的配置标识了当前功能模块的日志配置;
第一判断模块,用于依据所述当前功能模块的配置,判断当前功能模块的日志输出是否使能,所述使能表示日志控制开关打开,允许日志输出;
第二判断模块,用于依据所述当前功能模块的配置,判断当前功能模块的日志输出级别是否有效,所述有效表示日志级别在现有日志级别范围内;
第一任务生成模块,用于将当前事件按照所述当前功能模块的配置生成当前日志记录任务;
第二获取模块,用于获取线程配置列表,所述线程配置列表标识了当前运行应用程序或进程中所有线程的日志配置;以及,获取当前线程ID,所述当前线程ID是所述线程的线程号;
第三判断模块,用于依据所述线程配置列表和当前线程ID,判断线程配置列表中是否存在当前线程ID对应的配置;
第三获取模块,用于获取当前线程的配置,所述当前线程的配置标识了当前线程的日志配置;
第四判断模块,用于依据所述当前线程的配置,判断当前线程的日志输出是否使能;
第五判断模块,用于依据所述当前线程的配置,判断当前线程的日志输出级别是否有效;
第二任务生成模块,用于将当前事件按照所述当前线程的配置生成当前日志记录任务;
退出模块,用于结束并退出所述流程。
7.如权利要求6所述的一种日志记录装置,其特征在于,所述任务生成模块还包括:
更新模块,用于在获取当前功能模块的配置以及线程配置列表之前,更新配置文件。
8.如权利要求7所述的一种日志记录装置,其特征在于,所述更新模块具体用于执行以下流程:
a.读取配置文件,所述配置文件包含所有运行应用程序或进程的所有日志配置;
b.依据所述读取的配置文件,解析配置文件到实时配置列表,所述实时配置列表包含所有应用程序或进程的最新日志配置;
c.获取现有配置列表,所述现有配置列表包含当前所有运行应用程序或进程的日志配置,所述有配置列表中的日志配置包含按功能模块分类的日志配置和按线程分类的日志配置;
d.依据实时配置列表和现有配置列表的日志配置,判断是否有更新的日志配置,如果有则执行步骤e,否则执行步骤a重新运行配置更新任务;
e.将对应日志配置按功能模块分类和按线程分类更新到现有配置列表,更新完毕执行步骤a重新运行配置更新任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710835006.4A CN107577579B (zh) | 2017-09-15 | 2017-09-15 | 一种日志记录方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710835006.4A CN107577579B (zh) | 2017-09-15 | 2017-09-15 | 一种日志记录方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107577579A true CN107577579A (zh) | 2018-01-12 |
CN107577579B CN107577579B (zh) | 2020-10-27 |
Family
ID=61033679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710835006.4A Active CN107577579B (zh) | 2017-09-15 | 2017-09-15 | 一种日志记录方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107577579B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086157A (zh) * | 2018-08-02 | 2018-12-25 | 北京达佳互联信息技术有限公司 | 日志追踪方法、装置、电子设备及存储介质 |
CN109800207A (zh) * | 2019-01-14 | 2019-05-24 | 深圳前海微众银行股份有限公司 | 日志解析方法、装置、设备及计算机可读存储介质 |
CN110780857A (zh) * | 2019-10-23 | 2020-02-11 | 杭州涂鸦信息技术有限公司 | 一种统一日志组件 |
CN110932904A (zh) * | 2019-11-29 | 2020-03-27 | 新华三半导体技术有限公司 | 关键日志记录方法、装置及网络设备 |
CN111176968A (zh) * | 2019-12-30 | 2020-05-19 | 东软集团股份有限公司 | 一种生成日志文件的方法、装置及相关产品 |
CN111290355A (zh) * | 2020-02-27 | 2020-06-16 | 中电九天智能科技有限公司 | 记录及查找log的方法 |
CN111580813A (zh) * | 2020-03-25 | 2020-08-25 | 博雅信安科技(北京)有限公司 | 一种面向Java类热更新的自动化管理方法 |
CN112486471A (zh) * | 2020-11-10 | 2021-03-12 | 珠海格力电器股份有限公司 | 一种操作记录功能的配置方法、装置及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080243945A1 (en) * | 2007-04-02 | 2008-10-02 | Bmc Software, Inc. | Log Data Store and Assembler for Large Objects in Database System |
CN101667113A (zh) * | 2008-09-02 | 2010-03-10 | 阿里巴巴集团控股有限公司 | 一种多线程日志记录方法及装置 |
CN102902764A (zh) * | 2012-09-25 | 2013-01-30 | 北京奇虎科技有限公司 | 一种日志记录的方法和装置 |
CN103152391A (zh) * | 2013-01-31 | 2013-06-12 | 杭州华三通信技术有限公司 | 一种日志输出方法和装置 |
CN103309858A (zh) * | 2012-03-06 | 2013-09-18 | 深圳市腾讯计算机系统有限公司 | 一种多线程日志管理的方法及装置 |
CN105183621A (zh) * | 2015-08-17 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于多线程的日志管理方法及系统 |
CN105187241A (zh) * | 2015-08-19 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于linux内核的日志记录方法及系统 |
-
2017
- 2017-09-15 CN CN201710835006.4A patent/CN107577579B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080243945A1 (en) * | 2007-04-02 | 2008-10-02 | Bmc Software, Inc. | Log Data Store and Assembler for Large Objects in Database System |
CN101667113A (zh) * | 2008-09-02 | 2010-03-10 | 阿里巴巴集团控股有限公司 | 一种多线程日志记录方法及装置 |
CN103309858A (zh) * | 2012-03-06 | 2013-09-18 | 深圳市腾讯计算机系统有限公司 | 一种多线程日志管理的方法及装置 |
CN102902764A (zh) * | 2012-09-25 | 2013-01-30 | 北京奇虎科技有限公司 | 一种日志记录的方法和装置 |
CN103152391A (zh) * | 2013-01-31 | 2013-06-12 | 杭州华三通信技术有限公司 | 一种日志输出方法和装置 |
CN105183621A (zh) * | 2015-08-17 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于多线程的日志管理方法及系统 |
CN105187241A (zh) * | 2015-08-19 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于linux内核的日志记录方法及系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086157B (zh) * | 2018-08-02 | 2022-03-25 | 北京达佳互联信息技术有限公司 | 日志追踪方法、装置、电子设备及存储介质 |
CN109086157A (zh) * | 2018-08-02 | 2018-12-25 | 北京达佳互联信息技术有限公司 | 日志追踪方法、装置、电子设备及存储介质 |
CN109800207A (zh) * | 2019-01-14 | 2019-05-24 | 深圳前海微众银行股份有限公司 | 日志解析方法、装置、设备及计算机可读存储介质 |
CN110780857A (zh) * | 2019-10-23 | 2020-02-11 | 杭州涂鸦信息技术有限公司 | 一种统一日志组件 |
CN110780857B (zh) * | 2019-10-23 | 2024-01-30 | 杭州涂鸦信息技术有限公司 | 一种统一日志组件 |
CN110932904A (zh) * | 2019-11-29 | 2020-03-27 | 新华三半导体技术有限公司 | 关键日志记录方法、装置及网络设备 |
CN110932904B (zh) * | 2019-11-29 | 2022-08-09 | 新华三半导体技术有限公司 | 关键日志记录方法、装置及网络设备 |
CN111176968B (zh) * | 2019-12-30 | 2023-04-25 | 东软集团股份有限公司 | 一种生成日志文件的方法、装置及相关产品 |
CN111176968A (zh) * | 2019-12-30 | 2020-05-19 | 东软集团股份有限公司 | 一种生成日志文件的方法、装置及相关产品 |
CN111290355B (zh) * | 2020-02-27 | 2021-06-22 | 中电九天智能科技有限公司 | 记录及查找log的方法 |
CN111290355A (zh) * | 2020-02-27 | 2020-06-16 | 中电九天智能科技有限公司 | 记录及查找log的方法 |
CN111580813A (zh) * | 2020-03-25 | 2020-08-25 | 博雅信安科技(北京)有限公司 | 一种面向Java类热更新的自动化管理方法 |
CN111580813B (zh) * | 2020-03-25 | 2022-09-02 | 博雅信安科技(北京)有限公司 | 一种面向Java类热更新的自动化管理方法 |
CN112486471A (zh) * | 2020-11-10 | 2021-03-12 | 珠海格力电器股份有限公司 | 一种操作记录功能的配置方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107577579B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107577579A (zh) | 一种日志记录方法及装置 | |
CN110321371A (zh) | 日志数据异常检测方法、装置、终端及介质 | |
Wong et al. | Effective software fault localization using an RBF neural network | |
Fu et al. | Contextual analysis of program logs for understanding system behaviors | |
CN105225049B (zh) | 一种高可扩展性故障诊断专家系统 | |
CN107077414A (zh) | 用于生产调试的诊断工作流程 | |
CN113359664B (zh) | 故障诊断与维护系统、方法、设备及存储介质 | |
CN107102949A (zh) | 应用程序离线测试方法及工具 | |
CN109783384A (zh) | 日志用例测试方法、日志用例测试装置和电子设备 | |
EP2414903A1 (de) | Vorrichtung und verfahren zur erstellung eines prozessmodells | |
Mayr et al. | Abstracting process mining event logs from process-state data to monitor control-flow of industrial manufacturing processes | |
CN108694448A (zh) | Phm平台 | |
Kothapalli et al. | Continual monitoring of code quality | |
Kropp et al. | An approach to data driven process discovery in the cost estimation process of a construction company | |
Anquetil et al. | Decomposing god classes at siemens | |
CN109934412A (zh) | 基于时序预测模型的实时设备异常检测装置及方法 | |
CN107436891A (zh) | 基于sql脚本商场数据库的管理方法 | |
De Ley et al. | Rules-based analysis with JBoss Drools: adding intelligence to automation | |
Konopka et al. | Untangling development tasks with software developer's activity | |
CN101373506A (zh) | 一种基于漏洞模型的软件漏洞模型检测方法 | |
Mandal et al. | Diagnosis and troubleshooting of computer faults based on expert system and artificial intelligence | |
Kaupp et al. | „From Raw Data to Smart Documentation: Introducing a Semantic Fusion Process for Cyber-Physical Systems.“ | |
CN105242999A (zh) | 一种测试金融自助设备的方法及装置 | |
EP0331551B1 (fr) | Automate programmable par langage structuré | |
CN112147974B (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 |