CN106815128A - 日志输出方法及装置、电子设备 - Google Patents
日志输出方法及装置、电子设备 Download PDFInfo
- Publication number
- CN106815128A CN106815128A CN201611135409.XA CN201611135409A CN106815128A CN 106815128 A CN106815128 A CN 106815128A CN 201611135409 A CN201611135409 A CN 201611135409A CN 106815128 A CN106815128 A CN 106815128A
- Authority
- CN
- China
- Prior art keywords
- kernel
- log
- user
- daily record
- space
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- 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/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例涉及数据处理技术领域,公开了一种日志输出方法及装置、电子设备。本发明实施例中,日志输出方法包括:将内核空间中的内核日志移动至预先创建的预设队列;将所述预设队列中的所述内核日志发送至用户空间;所述用户空间储存有***日志;将所述用户空间中的所述内核日志与所述***日志同时输出。本发明实施例使得内核日志与***日志能够同时输出在一起,满足了用户需求,为用户快速分析问题提供了方便,提升了工作效率。
Description
技术领域
本发明实施例涉及数据处理技术领域,特别涉及一种日志输出方法及装置、电子设备。
背景技术
目前,在开发手机、平板电脑等电子产品上应用的各种操作***的过程中,调试作为不可或缺的手段之一。在调试过程中,***会输出一些关键信息,即日志信息,是开发人员解决问题的关键途径之一。现有的各类操作***中,安卓***(Android)应用非常广泛,在安卓***中,日志包括安卓***的日志与linux内核的日志。
现有的安卓***5.0及5.0以上的版本中,安卓***的日志与linux内核的日志分别有各自的缓冲区,linux内核的日志是在内核空间输出,安卓***的日志是在用户空间输出。
然而,在实现本发明的过程中,发明人发现现有技术中存在如下问题:在现有高速处理器的运行下,***每秒钟可能会有成百上千行的日志信息输出,而安卓***5.0及5.0以上的版本中,安卓***的日志与linux内核的日志分别保存在不同的缓冲区,且分别在用户空间与内核空间输出,两种空间无法直接交互,难以分析他们的逻辑先后顺序,这对问题的快速分析非常不利,大大影响了工作效率;并且,开发人员在分析某些问题时,需要同时获取安卓***的日志与linux内核的日志,现有技术无法满足将这两种日志同时输出至一起的需求。
发明内容
本发明实施例实施方式的目的在于提供一种日志输出方法及装置、电子设备,使得内核日志与***日志能够同时输出在一起,满足了用户需求,为用户快速分析问题提供了方便,提升了工作效率。
第一方面,本发明的实施例提供了一种日志输出方法,包括:将内核空间中的内核日志移动至预先创建的预设队列;将所述预设队列中的所述内核日志发送至用户空间;所述用户空间储存有***日志;将所述用户空间中的所述内核日志与所述***日志同时输出。
第二方面,本发明的实施例还提供了一种日志输出装置,包括:日志移动模块,用于将内核空间中的内核日志移动至预先创建的预设队列;日志发送模块,用于将所述预设队列中的所述内核日志发送至用户空间;所述用户空间储存有***日志;日志输出模块,用于将所述用户空间中的所述内核日志与所述***日志同时输出。
第三方面,本发明的实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的日志输出方法。
第四方面,本发明实施例提供了一种计算机程序产品,包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行本发明实施例的上述日志输出方法。
第五方面,本发明实施例提供了一种非暂态计算机存储介质,存储有计算机可执行指令,计算机可执行指令用于执行本发明实施例日志输出方法。
本发明的实施例相对于现有技术而言,采用在内核空间预先创建的预设队列处理内核日志,然后将预设队列中的内核日志发送至用户空间,最后内核日志与***日志在用户空间同时输出;即,内核日志由用户空间输出替代现有的内核空间输出,使得内核空间与用户空间能够之间交互,用户空间将来自内核空间的内核日志,与储存在用户空间的***日志同时输出至一起,使得输出的内核日志与***日志之间具有逻辑关系,且满足了用户需要同时获取两种日志的需求,为用户快速分析问题提供了方便,提升了工作效率。
另外,在所述将所述内核空间中的内核日志移动至预先创建的预设队列中,具体包括:按照预设规则过滤所述内核日志;将过滤后的所述内核日志移动至所述预设队列;在所述将所述用户空间中的所述内核日志与所述***日志同时输出中,具体包括:获取满足所述预设规则的***日志;将满足所述预设规则的所述内核日志与满足所述预设规则的所述***日志同时输出。本实施例中,将按照预设规则过滤后的内核日志移动至预设队列,使得用户空间只需输出满足预设规则的内核日志与满足预设规则的***日志,而无需同时输出所有的内核日志与***日志,减轻了用户空间的数据处理负担;并且进一步满足了用户需求,使得用户只需输出需要的日志信息,进一步为用户快速分析问题提供了方便。
另外,在所述日志输出方法中还包括:当判定无需在用户空间同时输出所述内核日志与所述***日志时,清空所述预设队列中的所述内核日志。本实施例中,只有在用户需要同时输出内核日志与***日志时,才会开启同时输出的功能;当用户无需输出时,则停止该功能,即两种日志则以现有的方式分别输出,以尽量满足内核日志实时性高的要求;另外,将预设队列中的内核日志清空,以释放空间,从而提高下一次接收到内核日志的处理速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据第一实施方式的日志输出方法的具体流程图;
图2是根据第二实施方式的日志输出方法的具体流程图;
图3是根据第三实施方式的日志输出方法的具体流程图;
图4是根据第四实施方式的日志输出方法的具体流程图;
图5是根据第五实施方式的日志输出装置的示意图;
图6是根据第六实施方式的日志输出装置的示意图;
图7是根据第七实施方式的日志输出装置的示意图;
图8是根据第八实施方式的日志输出装置的示意图;
图9是根据第九实施方式的电子设备的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种日志输出方法,应用于操作***,例如安卓***,本实施方式的具体流程如图1所示,包括:
步骤101,将内核空间中的内核日志移动至预先创建的预设队列。
本实施方式中,在安卓***中,内核日志即为linux内核的日志。
本实施方式中,在内核空间预先创建预设队列,用于缓存内核日志。由于在内核日志输出的过程中,内核日志有可能会处于原子上下文(即,内核日志处于中断或各种锁的上下文),这种情况有可能会影响内核日志的输出进程,导致内核日志输出延迟。因此,采用预设队列处理每一条内核日志,能够尽量避免影响内核日志的输出进程,保证内核日志输出进程的实时性。
实际上,本实施方式中,在内核空间可以新增一个内核驱动,用于维护预设队列。
本实施方式中,在内核日志移动至预设队列之后,可以对内核日志进行封装。进一步的,可以在封装的数据包中加入一些冗余字节,例如数据包包头、校验字节等,以保证数据传输的可靠性和完整性。
步骤102,将预设队列中的内核日志发送至用户空间。
本实施方式中,用户空间储存有***日志。在安卓***中,***日志即为安卓***的日志。
本实施方式中,预先建立一个内核空间与用户空间的通讯机制;内核驱动可以基于内核与通讯机制建立内核空间与用户空间的通信,从而将内核空间中的内核日志发送至用户空间。本实施方式中,通讯机制例如为采用套接字(Netlink)通讯机制,然实际中不限于此,还可以采用其他可实现内核空间与用户空间通信的通讯机制。
本实施方式中,可以调用内核空间与用户空间的交互接口函数,将内核日志发送至用户空间,然实际中不限于此。
步骤103,将用户空间中的内核日志与***日志同时输出。
本实施方式中,若在内核空间中对内核日志进行了封装,则在用户空间中,可以将接收到的内核日志进行解析。
本实施方式中,用户空间有多个设备文件,且各设备文件位于设备节点/dev/log/下,各类***日志存储在各设备文件中。输出***日志的工作原理主要是打开设备文件(例如/dev/log/events,/dev/log/radio,/dev/log/system,/dev/log/main等),读取设备文件中的***日志,从而输出***日志。
本实施方式中,可以在设备节点/dev/log/下面新增一个设备文件(例如新增设备文件/dev/log/kernel),将内核日志移动至新增的设备文件中,从而用户空间输出***日志时,将新增的设备文件中的内核日志一同输出。
本发明的实施例相对于现有技术而言,采用在内核空间预先创建的预设队列处理内核日志,然后将预设队列中的内核日志发送至用户空间,最后内核日志与***日志在用户空间同时输出;即,内核日志由用户空间输出替代现有的内核空间输出,使得内核空间与用户空间能够之间交互,用户空间将来自内核空间的内核日志,与储存在用户空间的***日志同时输出至一起,使得输出的内核日志与***日志之间有清楚的逻辑先后顺序,且满足了用户需要同时获取两种日志的需求,为用户快速分析问题提供了方便,提升了工作效率。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第二实施方式涉及一种日志输出方法。第二实施方式在第一实施方式的基础上进行改进,主要改进之处在于:在本发明第二实施方式中,将按照预设规则过滤后的内核日志移动至预设队列。
本发明的第二实施方式的具体流程如图2所示,包括:
步骤201,将内核空间中的内核日志移动至预先创建的预设队列。
如下,步骤201包括:
子步骤2011,按照预设规则过滤内核日志。
本实施方式中,在安卓***中,内核日志即为linux内核的日志。
本实施方式中,预先在内核空间中配置过滤器,预设规则为内核日志满足预设的日志等级和/或模块,然实际中不限于此,还可以根据实际需要设置其他预设规则。
示例的,本实施例中,预设规则为内核日志满足预设的日志等级。例如,每一条内核日志的头两个字节是消息头,第二个字节保存着日志等级,则,首先获取该内核日志的第二个字节(即获取日志等级),然后判断该内核日志的日志等级与预设的日志等级是否匹配,从而过滤出满足预设规则的内核日志。具体的,若预设的日志等级为error等级,text数组中存储着一条内核日志;则text数组的第二个字节text[1]保存着该条内核日志的等级,如text[1]==3代表error等级,则可以通过判断text[1]是否等于3,过滤出error等级的内核日志。然这里只是示例性说明,实际中不限于此。
示例的,本实施例中,预设规则为内核日志满足预设的模块,当前每一条内核日志的头两个字节是消息头,我们可以扩展消息头(例如增加第三个字节),在消息头中存放特殊字符(用来区分不同模块的内核日志),通过判断内核日志的模块信息与预设的模块是否匹配,从而过滤出满足预设规则的内核日志;并且,在相应模块的打印字符串的开头加入对应的特殊字符,以使该条内核日志与对应的模块相匹配。具体的,若预设的模块为相机模块,text数组中存储着一条内核日志,则text数组的第三个字节text[2]保存着该条内核日志的模块信息,如text[2]==1代表相机模块,则可以通过判断text[2]是否等于1过滤出相机模块的内核日志。然这里只是示例性说明,实际中不限于此。
示例的,本实施例中,预设规则为内核日志满足预设的日志等级和模块。则可以通过判断内核日志的日志等级与模块信息是否与预设的日志等级与模块相匹配,从而过滤出满足预设规则的内核日志。具体的,text数组中存储着一条内核日志,如text[1]==3代表error等级,text[2]==1代表相机模块,则可以通过判断text[1]==3&&text[2]==1过滤出error等级的相机模块的内核日志。
子步骤2012,将过滤后的内核日志移动至预设队列。
本实施方式中,在内核空间预先创建预设队列,用于缓存内核日志。由于在内核日志输出的过程中,内核日志有可能会处于原子上下文(即,内核日志处于中断或各种锁的上下文),这种情况有可能会影响内核日志的输出进程;因此,采用预设队列处理每一条内核日志,能够尽量避免影响内核日志的输出进程,保证内核日志输出进程的实时性。
实际上,本实施方式中,在内核空间可以新增一个内核驱动,用于维护预设队列。
本实施方式中,在内核日志移动至预设队列之后,可以对内核日志进行封装。进一步的,可以加入一些冗余字节,例如数据包包头、校验字节等,以保证数据传输的可靠性和完整性。
步骤202,判断预设队列中是否存在内核日志;若是,进入步骤203,否则继续判断。
本实施方式中,可以对预设队列进行扫描,从而判断是否存在内核日志。
步骤203,将预设队列中的内核日志发送至用户空间。
本实施方式中,当判断出预设队列中存在内核日志时,将预设队列中的内核日志发送至用户空间。
本实施方式中,用户空间储存有***日志。在安卓***中,***日志即为安卓***的日志。
本实施方式中,建立一个内核空间与用户空间的通讯机制;内核驱动可以基于内核与通讯机制建立内核空间与用户空间的通信,当驱动在加载后,创建并初始化该通讯机制的内核对象。本实施方式中,通讯机制例如为采用套接字(Netlink)通讯机制,然实际中不限于此,还可以采用其他可实现内核空间与用户空间通信的通讯机制。
本实施方式中,可以通过通讯机制,将内核日志发送至用户空间,然实际中不限于此,。
步骤204,将用户空间中的内核日志与***日志同时输出。
本实施方式中,在用户空间中,可以将接收到的内核日志进行解析。
如下,步骤204包括以下子步骤:
子步骤2041,获取满足预设规则的***日志。
本实施方式中,可以在用户空间中配置过滤器,按照预设规则将***日志进行过滤,从而获取出满足预设规则的***日志。然本实施例对满足预设规则的***日志的获取方式不作任何限制。
子步骤2042,将满足预设规则的内核日志与满足预设规则的***日志同时输出;
本实施方式中,若在内核空间中对内核日志进行了封装,则在用户空间中,可以将接收到的内核日志进行解析。
本实施方式中,用户空间有多个设备文件,且各设备文件位于设备节点/dev/log/下,各类***日志存储在各设备文件中。输出***日志的工作原理主要是打开设备文件(例如/dev/log/events,/dev/log/radio,/dev/log/system,/dev/log/main等),读取设备文件中的***日志,从而输出***日志。
本实施方式中,可以在设备节点/dev/log/下面新增一个设备文件(例如新增设备文件/dev/log/kernel),将内核日志移动至新增的设备文件中,从而用户空间输出***日志时,将新增的设备文件中的内核日志一同输出。
本发明的实施例相对于第一实施方式而言,将按照预设规则过滤后的内核日志移动至预设队列,使得用户空间只需输出满足预设规则的内核日志与满足预设规则的***日志,减轻了用户空间的数据处理负担;并且进一步满足了用户需求,使得用户只需输出需要的日志信息,进一步为用户快速分析问题提供了方便。
本发明的第三实施方式涉及一种日志输出方法。第三实施方式在第一实施方式的基础上进行细化,主要细化之处在于:在本发明第二实施方式中,通过预设的交互线程进行接收内核空间的内核日志。
本发明的第三实施方式的具体流程如图3所示,包括:
步骤301,将内核空间中的内核日志移动至预先创建的预设队列。
本实施方式中,在安卓***中,内核日志即为linux内核的日志。
本实施方式中,在内核空间预先创建预设队列,用于缓存内核日志。由于在内核日志输出的过程中,内核日志有可能会处于原子上下文(即,内核日志处于中断或各种锁的上下文),这种情况有可能会影响内核日志的输出进程;因此,采用预设队列处理每一条内核日志,能够尽量避免影响内核日志的输出进程,保证内核日志输出进程的实时性。
实际上,本实施方式中,在内核空间可以新增一个内核驱动,用于维护预设队列。
本实施方式中,在内核日志移动至预设队列之后,可以对内核日志进行封装。进一步的,可以加入一些冗余字节,例如数据包包头、校验字节等,以保证数据传输的可靠性和完整性。
步骤302,将预设队列中的内核日志发送至用户空间。
本实施方式中,用户空间储存有***日志。在安卓***中,***日志即为安卓***的日志。
本实施方式中,预先建立一个内核空间与用户空间的通讯机制;内核驱动可以基于内核与通讯机制建立内核空间与用户空间的通信,从而将内核空间中的内核日志发送至用户空间。本实施方式中,通讯机制例如为采用套接字(Netlink)通讯机制,然实际中不限于此,还可以采用其他可实现内核空间与用户空间通信的通讯机制。
本实施方式中,可以通过通讯机制,将内核日志发送至用户空间,然实际中不限于此。
如下,步骤302包括:
子步骤3021,将内核日志发送至用户空间中预设的交互线程。
本实施方式中,在用户空间中,预先建立一个与内核空间交互的交互线程,用于接收来自内核空间的内核日志。
子步骤3022,在交互线程中根据***数据包的格式封装内核日志。
本实施方式中,在预设的交互线程中,根据封装***日志的数据包的格式,封装内核日志,使得内核日志的数据包与***日志的数据包的格式相对应,然实际中不限于此,还可以以其他的方式封装内核日志。
示例的,***日志包含有日志等级。可以将不同等级的内核日志映射到***日志对应的等级,或者,将不同模块的内核日志映射到***日志对应的模块。然这里只是示例性说明,本实施方式对数据包的格式不作任何限制。
子步骤3023,将封装后的内核日志从交互线程发送至接收***日志的守护进程。***日志储存在守护进程中。
本实施方式中,***日志储存在接收***日志的守护进程中。***可以调用***日志的接口函数,将封装后的内核日志发送至守护进程。
步骤303,将用户空间中的内核日志与***日志同时输出。
本实施方式中,若在内核空间中对内核日志进行了封装,则在用户空间中,可以将接收到的内核日志进行解析。
本实施方式中,用户空间有多个设备文件,且各设备文件位于设备节点/dev/log/下,各类***日志存储在各设备文件中。输出***日志的工作原理主要是打开设备文件(例如/dev/log/events,/dev/log/radio,/dev/log/system,/dev/log/main等),读取设备文件中的***日志,从而输出***日志。
本实施方式中,可以在设备节点/dev/log/下面新增一个设备文件(例如新增设备文件/dev/log/kernel),将内核日志移动至新增的设备文件中,从而用户空间输出***日志时,将新增的设备文件中的内核日志一同输出。
于实际上,本实施方式也可以在第二实施方式的基础上改进的方案。
本发明的实施例相对于第一实施方式而言,用户空间预先创建的交互线程接收来自内核空间的内核日志,并且根据***日志的数据包的格式封装内核日志,最后接收***日志的守护进程将内核日志与***日志同时输出至一起。
本发明的第四实施方式涉及一种日志输出方法。第四实施方式在第一实施方式的基础上进行改进,主要改进之处在于:在本发明第四实施方式中,在用户停止同时输出内核日志与***日志时,将关闭内核日志与***日志同时输出的功能。
步骤401,判断是否需要在用户空间同时输出内核日志与***日志;若是,进入步骤402,否则进入步骤405。
本实施方式中,通常操作人员会根据问题的复现情况,判断是否还需要在用户空间继续同时输出内核日志与***日志。
本实施方式中,可以在内核空间的控制模块预先做一个检查机制。由于内核空间的内核日志是一直不断输出的,当用户停止同时输出时,内核并无法得知;因此,检查机制可以判断用户是否需要同时输出,从而响应***。
具体的,当用户需要同时输出时,***会接收到响应,开启同时输出的功能。而当用户无需同时输出时,***没有接收到响应,则不会开启该功能。
需要说明的是,本实施例中步骤401在步骤402之前执行,然而本实施方式对步骤401的顺序不作任何限制,还可以在其他步骤之间执行。
步骤402,将内核空间中的内核日志移动至预先创建的预设队列。
本实施方式中,在安卓***中,内核日志即为linux内核的日志。
本实施方式中,在内核空间预先创建预设队列,用于缓存内核日志。由于在内核日志输出的过程中,内核日志有可能会处于原子上下文(即,内核日志处于中断或各种锁的上下文),这种情况有可能会影响内核日志的输出进程;因此,采用预设队列处理每一条内核日志,能够尽量避免影响内核日志的输出进程,保证内核日志输出进程的实时性。
实际上,本实施方式中,在内核空间可以新增一个内核驱动,用于维护预设队列。
本实施方式中,在内核日志移动至预设队列之后,可以对内核日志进行封装。进一步的,可以加入一些冗余字节,例如数据包包头、校验字节等,以保证数据传输的可靠性和完整性。
步骤403,将预设队列中的内核日志发送至用户空间。
本实施方式中,当判断出需要在用户空间同时输出内核日志与***日志时,则将预设队列中的内核日志发送至用户空间。
本实施方式中,用户空间储存有***日志。在安卓***中,***日志即为安卓***的日志。
本实施方式中,预先建立一个内核空间与用户空间的通讯机制;内核驱动可以基于内核与通讯机制建立内核空间与用户空间的通信,从而将内核空间中的内核日志发送至用户空间。本实施方式中,通讯机制例如为采用套接字(Netlink)通讯机制,然实际中不限于此,还可以采用其他可实现内核空间与用户空间通信的通讯机制。
本实施方式中,可以调用内核空间与用户空间的交互接口函数,将内核日志发送至用户空间,然实际中不限于此。
步骤404,将用户空间中的内核日志与***日志同时输出。
本实施方式中,若在内核空间中对内核日志进行了封装,则在用户空间中,可以将接收到的内核日志进行解析。
本实施方式中,用户空间有多个设备文件,且各设备文件位于设备节点/dev/log/下,各类***日志存储在各设备文件中。输出***日志的工作原理主要是打开设备文件(例如/dev/log/events,/dev/log/radio,/dev/log/system,/dev/log/main等),读取设备文件中的***日志,从而输出***日志。
本实施方式中,可以在设备节点/dev/log/下面新增一个设备文件(例如新增设备文件/dev/log/kernel),将内核日志移动至新增的设备文件中,从而用户空间输出***日志时,将新增的设备文件中的内核日志一同输出。
步骤405,清空预设队列中的内核日志。
本实施方式中,当判定需要在用户空间同时输出内核日志与***日志时,将预设队列中的内核日志清空,以释放空间,以在下一次开启该功能时,接收内核日志。
于实际上,本实施方式也可以为第二或第三实施方式的基础上改进的方案。
本实施方式相对于第一实施方式而言,只有在用户需要同时输出内核日志与***日志时,才会开启同时输出的功能;当用户无需输出时,则停止该功能,即,两种日志则以现有的方式分别输出,以尽量满足内核日志实时性高的要求。另外,将预设队列中的内核日志清空,以释放空间,从而提高下一次接收到内核日志的处理速度。
本发明的第五实施方式涉及一种日志输出装置,如图5所示,包括:
日志移动模块51,用于将内核空间中的内核日志移动至预先创建的预设队列50。
日志发送模块52,用于将预设队列50中的内核日志发送至用户空间;用户空间储存有***日志。
日志输出模块53,用于将用户空间中的内核日志与***日志同时输出。
本实施方式相对于现有技术而言,日志移动模块将内核日志移动至预设队列,以处理内核日志,然后日志发送模块将预设队列中的内核日志发送至用户空间,最后日志输出模块将内核日志与***日志在用户空间同时输出;即,内核日志由用户空间中的日志输出模块输出替代现有的内核空间的输出模块输出,使得内核空间与用户空间能够之间交互,用户空间中的日志输出模块将来自内核空间的内核日志,与储存在用户空间的***日志同时输出至一起,使得输出的内核日志与***日志之间有清楚的逻辑先后顺序,且满足了用户需要同时获取两种日志的需求,为用户快速分析问题提供了方便,提升了工作效率。
不难发现,本实施方式为与第一实施方式相对应的***实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第六实施方式涉及一种日志输出装置。第六实施方式在第五实施方式的基础上进行改进,主要改进之处在于:如图6所示,在本发明第六实施方式中,日志输出装置还包括日志存在判断模块54;日志移动模块51包括过滤单元511以及移动单元512;日志输出模块53包括获取单元531以及输出单元532。
日志移动模块51包括:
过滤单元511,用于按照预设规则过滤内核日志。
移动单元512,用于将过滤后的内核日志移动至预设队列50。
日志存在判断模块54,判断预设队列50中是否存在内核日志。
日志发送模块52,用于将预设队列50中的内核日志发送至用户空间;用户空间储存有***日志;
日志输出模块53包括:
获取单元531,用于获取满足预设规则的***日志;
输出单元532,用于将满足预设规则的内核日志与满足预设规则的***日志同时输出。
本实施方式相对于第五实施方式而言,日志过滤单元将按照预设规则过滤后的内核日志移动至预设队列,使得用户空间中的日志输出单元只需输出满足预设规则的内核日志与满足预设规则的***日志,减轻了用户空间的数据处理负担;并且进一步满足了用户需求,使得用户只需输出需要的日志信息,进一步为用户快速分析问题提供了方便。
由于第二实施方式与本实施方式相互对应,因此本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,在第二实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
本发明第七实施方式涉及一种日志输出装置。第七实施方式在第五实施方式的基础上进行改进,主要改进之处在于:如图7所示,在本发明第七实施方式中,日志发送模块52包括第一发送单元521、封装单元522以及第二发送单元523。
日志移动模块51,用于将内核空间中的内核日志移动至预先创建的预设队列50。
日志发送模块52包括:
第一发送单元521,用于将内核日志发送至用户空间中预设的交互线程55。
封装单元522,用于在所述交互线程中根据***数据包的格式封装内核日志。
第二发送单元523,用于将封装后的内核日志从交互线程发送至接收***日志的守护进程56;***日志储存在守护进程中。
日志输出模块53,用于将用户空间中的内核日志与***日志同时输出。
本实施方式也可以为在第六实施方式的基础上改进的方案。
本实施方式相对于第五实施方式而言,日志发送单元将内核日志发送至用户空间预先创建的交互线程,日志封装单元根据***日志的数据包的格式封装内核日志,日志发送单元将内核日志从交互线程发送至接收***日志的守护进程。
由于第三实施方式与本实施方式相互对应,因此本实施方式可与第三实施方式互相配合实施。第三实施方式中提到的相关技术细节在本实施方式中依然有效,在第三实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第三实施方式中。
本发明第八实施方式涉及一种日志输出装置。第八实施方式在第五实施方式的基础上进行改进,主要改进之处在于:如图8所示,在本发明第八实施方式中,日志输出装置还包括日志输出判断模块57以及日子清空模块58。
日志输出判断模块57,用于判断是否需要在用户空间同时输出内核日志与***日志。
日志移动模块51,用于在日志输出判断模块57判定需要在用户空间同时输出内核日志与***日志时,将内核空间中的内核日志移动至预先创建的预设队列50。
日志清空模块58,用于在日志输出判断模块55判定无需在用户空间同时输出内核日志与***日志时,清空预设队列50中的内核日志。
日志发送模块52,用于将预设队列50中的内核日志发送至用户空间;用户空间储存有***日志。
日志输出模块53,用于将用户空间中的内核日志与***日志同时输出。
于实际上,本实施方式也可以第六或第七实施方式的基础上改进的方案。
本实施方式相对于第五实施方式而言,日志输出判断模块判断用户需要同时输出内核日志与***日志时,才会开启同时输出的功能;当用户无需输出时,日志停止移动模块则停止该功能,即,两种日志则以现有的方式分别输出,以尽量满足内核日志实时性高的要求。另外,日志清空模块将预设队列中的内核日志清空,以释放空间,从而提高下一次接收到内核日志的处理速度。
由于第四实施方式与本实施方式相互对应,因此本实施方式可与第四实施方式互相配合实施。第四实施方式中提到的相关技术细节在本实施方式中依然有效,在第四实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第四实施方式中。
本发明第九实施例涉及一种电子设备,如图9所示,该电子设备包括:至少一个处理器61以及与至少一个处理器61通信连接的存储器62,图9中以一个处理器61为例。
该电子设备还可以包括:输入装置63和输出装置64。
处理器61、存储器62、输入装置63和输出装置64可以通过总线或者其他方式连接,图9中以通过总线连接为例。
存储器62作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的日志输出方法对应的程序指令/模块(例如,附图5中所示的日志移动模块51、日志发送模块52和日志输出模块53)。处理器61通过运行存储在存储器62中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的日志输出方法。
存储器62可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据日志输出装置的使用所创建的数据等。此外,存储器62可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器62可选包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至用于日志输出方法的处理器61。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置63可接收输入的数字或字符信息,以及产生与日志输出装置的用户设置以及功能控制有关的键信号输入。输出装置64可包括显示屏等显示设备。
本实施例中,当存储器62中存储的一个或多个模块(例如,附图5中所示的日志移动模块51、日志发送模块52和日志输出模块53)被所述一个或者多个处理器61执行时,处理器61执行上述任意方法实施例中的日志输出方法,即执行:将内核空间中的内核日志移动至预先创建的预设队列;将预设队列中的内核日志发送至用户空间;用户空间储存有***日志;将用户空间中的内核日志与***日志同时输出。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本发明实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
本实施例相对于现有技术而言,采用在内核空间预先创建的预设队列处理内核日志,然后将预设队列中的内核日志发送至用户空间,最后内核日志与***日志在用户空间同时输出;即,内核日志由用户空间输出替代现有的内核空间输出,使得内核空间与用户空间能够之间交互,用户空间将来自内核空间的内核日志,与储存在用户空间的***日志同时输出至一起,使得输出的内核日志与***日志之间有清楚的逻辑先后顺序,且满足了用户需要同时获取两种日志的需求,为用户快速分析问题提供了方便,提升了工作效率。
本发明第十实施例涉及一种非暂态计算机存储介质,该计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的日志输出方法。
本实施例相对于现有技术而言,采用在内核空间预先创建的预设队列处理内核日志,然后将预设队列中的内核日志发送至用户空间,最后内核日志与***日志在用户空间同时输出;即,内核日志由用户空间输出替代现有的内核空间输出,使得内核空间与用户空间能够之间交互,用户空间将来自内核空间的内核日志,与储存在用户空间的***日志同时输出至一起,使得输出的内核日志与***日志之间有清楚的逻辑先后顺序,且满足了用户需要同时获取两种日志的需求,为用户快速分析问题提供了方便,提升了工作效率。
本发明第十一实施例涉及一种计算机程序产品,包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行本发明实施例的上述日志输出方法。
本实施例相对于现有技术而言,采用在内核空间预先创建的预设队列处理内核日志,然后将预设队列中的内核日志发送至用户空间,最后内核日志与***日志在用户空间同时输出;即,内核日志由用户空间输出替代现有的内核空间输出,使得内核空间与用户空间能够之间交互,用户空间将来自内核空间的内核日志,与储存在用户空间的***日志同时输出至一起,使得输出的内核日志与***日志之间有清楚的逻辑先后顺序,且满足了用户需要同时获取两种日志的需求,为用户快速分析问题提供了方便,提升了工作效率。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种日志输出方法,其特征在于,包括:
将内核空间中的内核日志移动至预先创建的预设队列;
将所述预设队列中的所述内核日志发送至用户空间;所述用户空间储存有***日志;
将所述用户空间中的所述内核日志与所述***日志同时输出。
2.根据权利要求1所述的日志输出方法,其特征在于,在所述将所述内核空间中的内核日志移动至预先创建的预设队列中,具体包括:
按照预设规则过滤所述内核日志;
将过滤后的所述内核日志移动至所述预设队列;
在所述将所述用户空间中的所述内核日志与所述***日志同时输出中,具体包括:
获取满足所述预设规则的***日志;
将满足所述预设规则的所述内核日志与满足所述预设规则的所述***日志同时输出。
3.根据权利要求2所述的日志输出方法,其特征在于,在所述将所述预设队列中的所述内核日志发送至用户空间之前,还包括:
判定所述预设队列中存在所述内核日志。
4.根据权利要求1所述的日志输出方法,其特征在于,在所述将所述预设队列中的所述内核日志发送至用户空间中,具体包括:
将所述内核日志发送至所述用户空间中预设的交互线程;
在所述交互线程中根据***数据包的格式封装所述内核日志;
将封装后的内核日志从所述交互线程发送至接收***日志的守护进程;所述***日志储存在所述守护进程中。
5.根据权利要求1所述的日志输出方法,其特征在于,在所述日志输出方法中还包括:
当判定无需在用户空间同时输出所述内核日志与所述***日志时,清空所述预设队列中的所述内核日志。
6.一种日志输出装置,其特征在于,包括:
日志移动模块,用于将内核空间中的内核日志移动至预先创建的预设队列;
日志发送模块,用于将所述预设队列中的所述内核日志发送至用户空间;所述用户空间储存有***日志;
日志输出模块,用于将所述用户空间中的所述内核日志与所述***日志同时输出。
7.根据权利要求6所述的日志输出装置,其特征在于,所述日志移动模块包括:
过滤单元,用于按照预设规则过滤所述内核日志;
移动单元,用于将过滤后的所述内核日志移动至所述预设队列;
所述日志输出模块包括:
获取单元,用于获取满足所述预设规则的***日志;
输出单元,用于将满足所述预设规则的所述内核日志与满足所述预设规则的所述***日志同时输出。
8.根据权利要求7所述的日志输出装置,其特征在于,所述日志输出装置还包括:
日志存在判断模块,用于在日志发送模块将所述预设队列中的所述内核日志发送至用户空间之前,判断所述预设队列中是否存在所述内核日志。
9.根据权利要求6所述的日志输出装置,其特征在于,所述日志发送模块包括:
第一发送单元,用于将所述内核日志发送至所述用户空间中预设的交互线程;
封装单元,用于在所述交互线程中根据***数据包的格式封装所述内核日志;
第二发送单元,还用于将封装后的内核日志从所述交互线程发送至接收***日志的守护进程;所述***日志储存在所述守护进程中。
10.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611135409.XA CN106815128A (zh) | 2016-12-11 | 2016-12-11 | 日志输出方法及装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611135409.XA CN106815128A (zh) | 2016-12-11 | 2016-12-11 | 日志输出方法及装置、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106815128A true CN106815128A (zh) | 2017-06-09 |
Family
ID=59108836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611135409.XA Pending CN106815128A (zh) | 2016-12-11 | 2016-12-11 | 日志输出方法及装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106815128A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108132868A (zh) * | 2018-01-15 | 2018-06-08 | 政采云有限公司 | 一种数据监控方法、装置、计算设备及存储介质 |
CN108170538A (zh) * | 2017-12-08 | 2018-06-15 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、装置以及电子设备 |
CN108388496A (zh) * | 2018-01-23 | 2018-08-10 | 晶晨半导体(上海)股份有限公司 | 一种***日志的收集方法 |
CN108647131A (zh) * | 2018-04-08 | 2018-10-12 | 广州视源电子科技股份有限公司 | 运行日志的输出*** |
-
2016
- 2016-12-11 CN CN201611135409.XA patent/CN106815128A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170538A (zh) * | 2017-12-08 | 2018-06-15 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、装置以及电子设备 |
CN108170538B (zh) * | 2017-12-08 | 2021-05-28 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、装置以及电子设备 |
CN108132868A (zh) * | 2018-01-15 | 2018-06-08 | 政采云有限公司 | 一种数据监控方法、装置、计算设备及存储介质 |
CN108388496A (zh) * | 2018-01-23 | 2018-08-10 | 晶晨半导体(上海)股份有限公司 | 一种***日志的收集方法 |
WO2019144670A1 (zh) * | 2018-01-23 | 2019-08-01 | 晶晨半导体(上海)股份有限公司 | 一种***日志的收集方法 |
US11520681B2 (en) | 2018-01-23 | 2022-12-06 | Amlogic (Shanghai) Co., Ltd. | System log collection method |
CN108647131A (zh) * | 2018-04-08 | 2018-10-12 | 广州视源电子科技股份有限公司 | 运行日志的输出*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9886017B2 (en) | Counter operation in a state machine lattice | |
US9817678B2 (en) | Methods and systems for detection in a state machine | |
CN106815128A (zh) | 日志输出方法及装置、电子设备 | |
CN108365967A (zh) | 动态配置通讯参数的方法、***、终端及计算机可读存储介质 | |
US9389841B2 (en) | Methods and systems for using state vector data in a state machine engine | |
CN108038135A (zh) | 电子装置、多表关联查询的方法及存储介质 | |
CN106600521A (zh) | 一种图像处理方法及终端设备 | |
CN107862352A (zh) | 一种二维码分享方法及二维码分享设备 | |
CN108255602A (zh) | 任务组合方法及终端设备 | |
CN108171189A (zh) | 一种视频编码方法、视频编码装置及电子设备 | |
CN106803188A (zh) | 业务操作的显示方法、装置及电子设备 | |
CN107748718A (zh) | 应用程序测试方法、装置及服务器 | |
CN108021461A (zh) | 提升社交圈子数据处理性能的方法及装置 | |
CN110908837B (zh) | 应用程序异常处理方法、装置、电子设备及存储介质 | |
CN104765792B (zh) | 一种维度数据存储的方法、装置及*** | |
CN108696649A (zh) | 图像处理方法、装置、设备及计算机可读存储介质 | |
CN109471893A (zh) | 网络数据的查询方法、设备及计算机可读存储介质 | |
CN109614094A (zh) | 一种基于UML的GPU glCallList视图模型 | |
CN107885691A (zh) | 串口数据传输方法、分布式设备及主机 | |
CN108156273A (zh) | 一种匿名用户id生成方法、装置及电子设备 | |
CN109120731B (zh) | 一种通用型通讯方法、***及装置 | |
CN101425120B (zh) | 读卡器及其执行方法 | |
CN109522307A (zh) | 服务器、基于Mongodb的保单数据查询方法及存储介质 | |
CN108400887A (zh) | 符号网络的结构识别方法及装置 | |
CN204731785U (zh) | 基于云平台管理的验证码智能采集设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170609 |