CN117850707A - 日志打印方法、装置、设备、存储介质以及车辆 - Google Patents
日志打印方法、装置、设备、存储介质以及车辆 Download PDFInfo
- Publication number
- CN117850707A CN117850707A CN202211227597.4A CN202211227597A CN117850707A CN 117850707 A CN117850707 A CN 117850707A CN 202211227597 A CN202211227597 A CN 202211227597A CN 117850707 A CN117850707 A CN 117850707A
- Authority
- CN
- China
- Prior art keywords
- log
- application
- shared memory
- printing
- address
- 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 186
- 230000015654 memory Effects 0.000 claims abstract description 175
- 230000008569 process Effects 0.000 claims abstract description 128
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 239000000758 substrate Substances 0.000 claims 1
- 238000004891 communication Methods 0.000 abstract description 19
- 238000004590 computer program Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
-
- 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/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开的实施例提供了一种日志打印方法、装置、设备、存储介质以及车辆。方法包括:调用微内核设备中日志打印接口为多个应用创建各自的共享内存;通过日志服务进程获取每个所述应用的共享内存的地址;通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,其中,所述目标共享内存为所述多个应用中至少部分所述应用的共享内存。以此方式,即便微内核设备中无法通过系统调用方式为日志服务进程直接传递日志并使其直接打印日志,也可在微内核设备中建立日志进程服务,并使其利用进程间通信方式打印微内核设备中应用的日志,这就提高了微内核设备中日志打印的灵活性和便捷性。
Description
技术领域
本公开涉及微内核领域,尤其涉及一种日志打印方法、装置、设备、存储介质以及车辆。
背景技术
目前,为了降低系统的复杂程度,提高系统的可扩展性,微内核系统的使用越来越普及,微内核系统的本质就是将更多的用户服务程序放置在内核之外的用户态完成。而将很多用户服务程序被放在内核之外用户态之后,微内核系统就存在一定的安全隐患,为了解决该安全隐患,提高微内核系统的运行安全,就为微内核系统中各应用设置了彼此独立的存储空间,以方便各应用能够安全地存储各自的日志。但这种各应用的存储空间彼此独立的方式也导致微内核系统中应用并无法通过系统调用方式直接打印日志,使得微内核设备中日志打印极其不便。
发明内容
本公开提供了一种日志打印方法、装置、设备、存储介质以及车辆。
根据本公开的第一方面,提供了一种日志打印方法。该方法包括:
调用微内核设备中日志打印接口为多个应用创建各自的共享内存;
通过日志服务进程获取每个所述应用的共享内存的地址;
通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,其中,所述目标共享内存为所述多个应用中至少部分所述应用的共享内存。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述调用微内核设备中日志打印接口为多个应用创建各自的共享内存,包括:
针对每个所述应用,在监测到针对所述应用的打印接口调用请求时,从多个日志打印接口中调用与所述打印接口调用请求对应的日志打印接口为所述应用创建共享内存;或者,
针对每个所述应用,当所述应用的当前运行状态满足预设运行状态时,从所述多个日志打印接口中调用所述预设运行状态对应的日志打印接口为所述应用创建各自的共享内存。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述调用微内核设备中日志打印接口为多个应用创建各自的共享内存,包括:
针对每个所述应用,若所述应用为启动状态,则调用所述日志打印接口以控制日志注册进程为所述应用创建共享内存;
所述通过日志服务进程获取每个所述应用的共享内存的地址,包括:
通过所述日志服务进程,接收所述日志注册进程在已为所述应用创建共享内存之后,发送的所述应用的共享内存的地址。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:
在每个所述应用运行的过程中,调用所述日志打印接口将每个所述应用的日志存储至各自的共享内存中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:
针对每个所述应用,若所述应用为退出状态,则调用所述日志打印接口以控制日志注销进程释放所述应用的共享内存;
通过所述日志服务进程,接收所述日志注销进程在释放所述应用的共享内存之后,发送的地址删除通知;
通过所述日志服务进程删除所述应用的共享内存的地址。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述目标共享内存为所述多个应用的共享内存;
所述通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,包括:
通过所述日志服务进程,按照预设读取周期读取所述目标共享内存的地址中存储的日志,并按照日志时间戳打印所读取的日志。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,包括:
通过所述日志服务进程接收目标应用调用所述日志打印接口时发送的目标打印请求;其中,所述目标应用为所述目标共享内存对应的应用中的至少一个应用;
通过所述日志服务进程响应于所述目标打印请求,读取所述目标共享内存的地址中存储的日志并打印。
根据本公开的第二方面,提供了一种日志打印装置。该装置包括:
调用模块,用于调用微内核设备中日志打印接口为多个应用创建各自的共享内存;
获取模块,用于通过日志服务进程获取每个所述应用的共享内存的地址;
读取模块,用于通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,其中,所述目标共享内存为所述多个应用中至少部分所述应用的共享内存。
根据本公开的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
根据本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如根据本公开的第一方面和/或第二方面的方法。
根据本公开的第五方面,提供了一种车辆,所述车辆包括如第二方面所述的日志打印装置和/或如第三方面所述的电子设备。
本公开中,在调用日志打印接口之后,可利用日志打印接口为多个应用创建各自的共享内存,然后通过日志服务进程获取每个应用的共享内存的地址,便于日志服务进程读取目标共享内存的地址中存储的日志并打印,而这种应用与日志服务进程通过相互约定的共享内存进行间接通信的方式就是进程间通信方式,如此即便微内核设备中无法通过系统调用方式为日志服务进程直接传递日志并使其直接打印日志,也可在微内核设备中建立日志进程服务,并使其利用进程间通信方式打印微内核设备中应用的日志,这就提高了微内核设备中日志打印的灵活性和便捷性。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。附图用于更好地理解本方案,不构成对本公开的限定在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本公开的实施例的日志打印方法的流程图;
图2示出了根据本公开的实施例的日志打印原理的示意图;
图3示出了根据本公开的实施例的日志打印装置的框图;
图4示出了能够实施本公开的实施例的示例性电子设备的方框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1示出了根据本公开实施例的微内核设备中日志打印方法100的流程图。方法100的执行主体可以是车辆上安装有微内核系统的自动驾驶芯片,或安装有微内核系统的处理器芯片,所述方法可以包括:
步骤110,(自动驾驶芯片或处理器芯片)调用微内核设备中日志打印接口为多个应用创建各自的共享内存。
应用在开发或者测试环节,用户(即开发人员或测试人员)为了确保应用没有缺陷(bug)通常会查看日志的运行日志,因而,就需要打印日志,此时,开发人员或测试人员会触发应用的日志打印功能选项,此时芯片就会生成日志打印接口的调用指令,然后响应于该调用指令,调用微内核设备中日志打印接口,执行步骤110。
当然,芯片若监测到某应用的运行状态满足预设运行状态时,也会自动生成日志打印接口的调用指令,然后响应于该调用指令,调用微内核设备中日志打印接口,执行步骤110。
日志打印接口是日志服务进程为微内核设备中各应用提供的接口,存储在liblog库中,这些日志打印接口任何一个应用需要时都可调用。
日志服务进程即Logserver,运行在微内核设备的用户态,其中微内核设备可以是安装有微内核操作系统的车辆。
日志打印接口用于创建共享内存、协助存储日志以便于进行日志打印,当然,日志打印接口在应用退出后,还可用于释放该共享内存。
日志打印接口可以包括多个,如pr_info接口(普通打印接口,即在应用处于任何状态,均可调用)、pr_err接口(错误打印接口,即在应用处于运行错误状态时,可调用该错误打印接口)、pr_debug接口(调试打印接口,即在应用处于调试状态时,可调用该调试打印接口)、set print level接口(设置打印等级接口,该打印等级接口调用时,需要用户手动输入打印级别如1级别、2级别等)、dump_log接口(日志收集接口,在需要将日志输出至某文件进行保存时,需要调用该日志收集接口)等,而这些日志打印接口是各应用共用的,任一个应用被触发后都可调用。当然,pr_info接口、pr_err接口、pr_debug接口的打印等级不同,比如pr_err的打印等级最高、pr_info的打印等级其次、pr_debug的打印等级最低,如此,调用不同的日志打印接口就可实现分级打印。
多个应用为微内核设备中运行在用户态的所有应用,数量不做限制。
步骤120,(自动驾驶芯片或处理器芯片)通过日志服务进程获取每个所述应用的共享内存的地址。获取每个应用的共享内存的地址,便于日志服务进程利用该地址能够读取打印日志。
各应用的共享内存的地址可以是安全连续的、也可以是安全不连续的或者是部分连续的,本公开不做限制。只不过每个应用的共享内存彼此独立,任意两个应用之间并无法相互访问。
日志服务进程可通过原子操作将每个应用的共享内存的地址以无锁ringbuffer(无锁环形缓冲队列)的方式进行存储。
步骤130,(自动驾驶芯片或处理器芯片)通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,其中,所述目标共享内存为所述多个应用中至少部分所述应用的共享内存。打印目标共享内存的地址中存储的日志,可方便用户查看。
目标共享内存可以是所有应用的共享内存或者部分应用的共享内存。在调用日志打印接口为多个应用创建各自的共享内存之后,日志服务进程通过目标共享内存的地址读取所述目标共享内存中日志并打印的方式即应用与日志服务进程通过相互约定的方式进行间接通信,而这种应用与日志服务进程通过相互约定进行间接通信的方式就是进程间通信(IPC,Inter-Process Communication)。
在调用日志打印接口之后,可利用日志打印接口为多个应用创建各自的共享内存,然后通过日志服务进程获取每个应用的共享内存的地址,便于日志服务进程读取目标共享内存的地址中存储的日志并打印,而这种应用与日志服务进程通过相互约定的共享内存进行间接通信的方式就是进程间通信方式,如此即便微内核设备中无法通过系统调用方式为日志服务进程直接传递日志并使其直接打印日志,也可在微内核设备中建立日志进程服务,并使其利用进程间通信方式打印微内核设备中应用的日志,这就提高了微内核设备中日志打印的灵活性和便捷性。
在一些实施例中,所述调用微内核设备中日志打印接口为多个应用创建各自的共享内存,包括:
针对每个所述应用,(自动驾驶芯片或处理器芯片)在监测到针对所述应用的打印接口调用请求时,从多个日志打印接口中调用与所述打印接口调用请求对应的日志打印接口为所述应用创建共享内存。创建共享内存可方便及时存储应用的运行日志。
或者
自动驾驶芯片或处理器芯片实时/预设时间间隔监测应用的当前运行状态,针对每个所述应用,当所述应用的当前运行状态满足预设运行状态时,从所述多个日志打印接口中调用所述预设运行状态对应的日志打印接口为所述应用创建各自的共享内存,其中,所述多个日志打印接口各自的日志打印级别不同,多个日志打印接口各自的日志打印级别不同,可使得应用调用不同日志打印接口之后就能实现分级打印。创建共享内存可方便及时存储应用的运行日志。
可为每个应用均提供日志打印功能的选项,以方便用户(即应用测试人员或开发人员)选择日志打印功能,如此,针对每个应用,在用户触发该应用的日志打印功能时,就可确认监测到针对该应用的打印接口调用请求,然后从多个日志打印接口中自动调用与所述打印接口调用请求对应的日志打印接口,以便于通过该对应的日志打印接口为该应用创建共享内存以进行日志存储。
或者
针对每个应用,当该应用的当前运行状态满足预设运行状态时,如该应用运行错误、运行在调试状态中,可从多个日志打印接口中自动调用该预设运行状态对应的日志打印接口,如预设运行状态为运行错误,则调用pr_err接口,预设运行状态为调试状态,则调用pr_debug接口,以便于通过该对应的日志打印接口为该应用创建共享内存以进行日志存储。
在一些实施例中,所述调用微内核设备中日志打印接口为多个应用创建各自的共享内存,包括:
针对每个所述应用,若(自动驾驶芯片或处理器芯片)监测到应用为启动状态,则调用所述日志打印接口以控制日志注册进程为所述应用创建共享内存,以便于利用该共享内存存储该应用的日志。
日志注册进程即log_regitster进程。
调用日志打印接口之后,日志打印接口就可自动创建日志注册进程,然后控制日志注册进程为应用创建共享内存。
其次,日志打印接口被调用后,可从该应用处获取该应用的PID(ProcessIdentification,进程标识符),这样在创建共享内存时,可使用该应用的PID进行标记。
应用为启动状态指的是该微内核设备启动后,该应用第一次启动,或者该应用退出后,又再次启动。
所述通过日志服务进程获取每个所述应用的共享内存的地址,包括:
(自动驾驶芯片或处理器芯片)通过所述日志服务进程,接收所述日志注册进程在已为所述应用创建共享内存之后,发送的所述应用的共享内存的地址,以便于存储该应用的共享内存的地址,然后实时或者定时对该共享内存的地址中日志进行读取然后打印。
针对每个应用,若该应用为启动状态,则调用所述日志打印接口以控制日志注册进程为所述应用创建共享内存,而该日志注册进程创建完共享内存之后,可利用日志注册进程直接通知所述日志服务进程将该应用的共享内存的地址进行保存,即通过日志服务进程可接收日志注册进程在已为所述应用创建共享内存之后,发送的所述应用的共享内存的地址,以便于日志服务进程将地址保存后,可方便快捷地访问该应用的共享内存,进行日志访问、打印。
在一些实施例中,所述方法还包括:
(自动驾驶芯片或处理器芯片)在每个所述应用运行的过程中,调用所述日志打印接口将每个所述应用的日志存储至各自的共享内存中,以便于日志服务进程定时或实时读取共享内存中日志并存储。
若每个应用不是启动状态而是在运行中,则调用日志打印接口将每个应用的日志存储至各自的共享内存中,以便实时存储每个应用的日志。
在一些实施例中,所述方法还包括:
针对每个所述应用,自动驾驶芯片或处理器芯片实时/预设时间间隔监测应用的当前运行状态,若所述应用为退出状态,则调用所述日志打印接口以控制日志注销进程释放所述应用的共享内存,以避免对共享内存进行不必要的占用;日志注销进程即log_unregitster进程。
通过所述日志服务进程,接收所述日志注销进程在释放所述应用的共享内存之后,发送的地址删除通知。
(自动驾驶芯片或处理器芯片)通过所述日志服务进程删除所述应用的共享内存的地址,以避免日志服务进程保存不必要的地址。
针对每个应用,若该应用为退出状态,则调用日志打印接口以创建日志注销进程,然后控制日志注销进程释放应用的共享内存,进而日志注销进程会通知日志服务进程删除该应用的共享内存的地址,因而,通过日志服务进程可接收到日志注销进程在释放该应用的共享内存之后,发送的地址删除通知,并通过日志服务进程删除所述应用的共享内存,这样,可避免应用在退出后仍然占用共享内存,也避免日志服务进程保存不必要的地址。
在一些实施例中,所述目标共享内存为所述多个应用的共享内存(即目标共享内存可以是所有应用的共享内存)。
所述通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,包括:
(自动驾驶芯片或处理器芯片)通过所述日志服务进程,按照预设读取周期读取所述目标共享内存的地址中存储的日志,并按照日志时间戳打印所读取的日志,以确保能够对所有共享内存的日志进行打印,且实现有序打印。
将每个应用的日志保存至各自的共享内存之后,日志服务进程在获得每个应用的共享内存的地址的基础上,可按照预设读取周期读取每个应用的共享内存中日志,并按照日志时间戳打印所有日志,如此在微内核中日志服务进程也可方便地对每个应用中日志进行打印管理,而这种方式由于并不需要应用每次存储完日志都通知一遍日志服务进程去读取打印日志,即应用只负责写日志,不需要再通知日志服务进程,而日志服务进程只负责打印,因而,减少了应用与日志服务进程之间的进程间通信次数,可提高系统性能。
在一些实施例中,所述通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,包括:
(自动驾驶芯片或处理器芯片)通过所述日志服务进程接收目标应用调用所述日志打印接口时发送的目标打印请求;其中,所述目标应用为所述目标共享内存对应的应用中的至少一个应用,即目标应用可以为目标共享内存对应的应用中的一个应用或者两个以上应用,以确保无论目标应用中哪个或哪些应用发出打印请求,均能够打印目标应用的日志,以根据用户打印需求实现灵活打印。
通过所述日志服务进程响应于所述目标打印请求,读取所述目标共享内存的地址中存储的日志并打印。
目标打印请求中可携带需要打印的日志所属的应用的标识,以方便日志服务进程确认需要读取并打印哪些共享内存中日志。
日志服务进程在接收目标应用调用所述日志打印接口时发送的目标打印请求之后,可按照目标共享内存的地址,读取目标共享内存的地址中存储的日志,然后按照时间戳排序整理后进行打印,以满足用户不同的日志打印需求。
在一些实施例中,所述日志服务进程通过以下步骤打印所述目标共享内存的地址中存储的日志:
日志服务进程调用串行服务进程打印所述目标共享内存的地址中存储的日志,以通过串口打印日志。
或者
日志服务进程直接输出所述目标共享内存的地址中存储的日志,以直接打印日志。
或者
日志服务进程将所述目标共享内存中日志输出至预设文件,以通过文件保存日志。
打印目标共享内存的地址中存储的日志的方式可以是:
通过日志服务进程调用串行服务进程打印日志即调用serial server(串联服务)驱动程序的接口通过串口输出。
或
通过所述日志服务进程直接输出所述目标共享内存中日志即日志服务进程通过printf输出。
或
通过所述日志服务进程将所述目标共享内存中存储的日志输出至预设文件即日志服务进程调用dump_log接口将目标共享内存中日志重定向到预设文件,以通过文件存储目标共享内存中日志,如此,就可提高目标共享内存中日志的打印灵活性。
下面将结合图2进一步详细说明本公开的技术方案:
Logserver(日志服务进程)作为微内核系统中用于管理日志的进程,liblog(类库)以库的形式为client(app1至appN)提供了pr_info,pr_err,pr_debug等接口,当然,这些接口是Logserver为应用提供的。
当client启动时,会先调用log_regitster申请共享内存(每个应用的共享内存即appi-shmbuf,shmbuf即共享内存标识),在client退出前调用log_unreigster释放共享内存。在client申请共享内存时会利用log_regitster同步给logserver发消息,logserver会将client的共享地址保存在数组中后续访问数据。具体地,logserver将共享内存地址以无锁ringbuffer的方式进行存储。
logserver通过时间排序算法实现了对不同client的log按时间戳输出,当serialserver运行时通过串口输出,否则由printf输出,当然,logserver可调用lib库中dump_log接口,将日志log重定向到某文件。
通过上述方案,可利用logserver支持微内核log按时间戳排序,可以选择输出到串口、printf或重定向到文件,以及分级打印等功能。
下面将结合图2进一步详细说明本公开的技术方案:
在app1至appN中appi(i的取值为1-N中任一个应用或者多个应用)被触发调用日志打印功能的选项或者运行状态满足预设运行状态时,调用liblog中的存储的pr_info,pr_err,pr_debug等接口中对应的日志打印接口,然后即可利用该日志打印接口创建日志注册进程log_regitster,并使用该日志注册进程创建appi对应的共享内存appi_shmbuf,该日志注册进程创建好appi_shmbuf之后,会通知日志服务进程log-server保存该appi_shmbuf的地址。
日志服务进程log-server接收到日志注册进程发送的appi_shmbuf的地址之后,保存该地址。
appi运行过程中,通过上述对应的日志打印接口保存其运行日志至appi_shmbuf中。
日志服务进程log-server实时或者按照预设时间间隔读取appi_shmbuf中存储的日志。
如此,即便微内核设备中无法通过系统调用方式为日志服务进程直接传递日志并使其直接打印日志,appi也能与日志服务进程通过相互约定的共享内存方式进行进程间通信,并利用进程间通信方式打印微内核设备中应用的日志,这就提高了微内核设备中日志打印的灵活性和便捷性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
以上是关于方法实施例的介绍,以下通过装置实施例,对本公开所述方案进行进一步说明。
图3示出了根据本公开的实施例的微内核设备中日志打印装置300的方框图。如图3所示,装置300包括:
调用模块310,用于调用微内核设备中日志打印接口为多个应用创建各自的共享内存;
获取模块320,用于通过日志服务进程获取每个所述应用的共享内存的地址;
读取模块330,用于通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,其中,所述目标共享内存为所述多个应用中至少部分所述应用的共享内存。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
根据本公开的实施例,本公开还提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任一项方法实施例。
根据本公开的实施例,本公开还提供了一种车辆,包括:如上述实施例所述的微内核设备中日志打印装置或如上述实施例所述的电子设备。
根据本公开的实施例,本公开还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如上述任一项方法实施例。
图4示出了可以用来实施本公开的实施例的电子设备400的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
设备400包括计算单元401,其可以根据存储在只读存储器(ROM)402中的计算机程序或者从存储单元408加载到随机访问存储器(RAM)403中的计算机程序,来执行各种适当的动作和处理。在RAM 403中,还可存储设备400操作所需的各种程序和数据。计算单元401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
设备400中的多个部件连接至I/O接口405,包括:输入单元406,例如键盘、鼠标等;输出单元407,例如各种类型的显示器、扬声器等;存储单元408,例如磁盘、光盘等;以及通信单元409,例如网卡、调制解调器、无线通信收发机等。通信单元409允许设备400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元401的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元401执行上文所描述的各个方法和处理,例如方法100。例如,在一些实施例中,方法100可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元408。在一些实施例中,计算机程序的部分或者全部可以经由ROM 402和/或通信单元409而被载入和/或安装到设备400上。当计算机程序加载到RAM403并由计算单元401执行时,可以执行上文描述的方法100的一个或多个步骤。备选地,在其他实施例中,计算单元401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法100。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (11)
1.一种日志打印方法,其特征在于,包括:
调用微内核设备中日志打印接口为多个应用创建各自的共享内存;
通过日志服务进程获取每个所述应用的共享内存的地址;
通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,其中,所述目标共享内存为所述多个应用中至少部分所述应用的共享内存。
2.根据权利要求1所述的方法,其特征在于,所述调用微内核设备中日志打印接口为多个应用创建各自的共享内存,包括:
针对每个所述应用,在监测到针对所述应用的打印接口调用请求时,从多个日志打印接口中调用与所述打印接口调用请求对应的日志打印接口为所述应用创建共享内存;或者,
针对每个所述应用,当所述应用的当前运行状态满足预设运行状态时,从所述多个日志打印接口中调用所述预设运行状态对应的日志打印接口为所述应用创建各自的共享内存。
3.根据权利要求1所述的方法,其特征在于,
所述调用微内核设备中日志打印接口为多个应用创建各自的共享内存,包括:
针对每个所述应用,若所述应用为启动状态,则调用所述日志打印接口以控制日志注册进程为所述应用创建共享内存;
所述通过日志服务进程获取每个所述应用的共享内存的地址,包括:
通过所述日志服务进程,接收所述日志注册进程在已为所述应用创建共享内存之后,发送的所述应用的共享内存的地址。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在每个所述应用运行的过程中,调用所述日志打印接口将每个所述应用的日志存储至各自的共享内存中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对每个所述应用,若所述应用为退出状态,则调用所述日志打印接口以控制日志注销进程释放所述应用的共享内存;
通过所述日志服务进程,接收所述日志注销进程在释放所述应用的共享内存之后,发送的地址删除通知;
通过所述日志服务进程删除所述应用的共享内存的地址。
6.根据权利要求1所述的方法,其特征在于,所述目标共享内存为所述多个应用的共享内存;
所述通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,包括:
通过所述日志服务进程,按照预设读取周期读取所述目标共享内存的地址中存储的日志,并按照日志时间戳打印所读取的日志。
7.根据权利要求1至6中任一项所述的方法,其特征在于,
所述通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,包括:
通过所述日志服务进程接收目标应用调用所述日志打印接口时发送的目标打印请求;其中,所述目标应用为所述目标共享内存对应的应用中的至少一个应用;
通过所述日志服务进程响应于所述目标打印请求,读取所述目标共享内存的地址中存储的日志并打印。
8.一种日志打印装置,其特征在于,包括:
调用模块,用于调用微内核设备中日志打印接口为多个应用创建各自的共享内存;
获取模块,用于通过日志服务进程获取每个所述应用的共享内存的地址;
读取模块,用于通过所述日志服务进程,读取目标共享内存的地址中存储的日志并打印,其中,所述目标共享内存为所述多个应用中至少部分所述应用的共享内存。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
11.一种车辆,其特征在于,包括:如权利要求8所述的装置,和/或如权利要求9所述的电子设备,和/或如权利要求10所述的可读存储介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211227597.4A CN117850707A (zh) | 2022-10-09 | 2022-10-09 | 日志打印方法、装置、设备、存储介质以及车辆 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211227597.4A CN117850707A (zh) | 2022-10-09 | 2022-10-09 | 日志打印方法、装置、设备、存储介质以及车辆 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117850707A true CN117850707A (zh) | 2024-04-09 |
Family
ID=90534962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211227597.4A Pending CN117850707A (zh) | 2022-10-09 | 2022-10-09 | 日志打印方法、装置、设备、存储介质以及车辆 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117850707A (zh) |
-
2022
- 2022-10-09 CN CN202211227597.4A patent/CN117850707A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11210109B2 (en) | Method and system for loading resources | |
US8713582B2 (en) | Providing policy-based operating system services in an operating system on a computing system | |
CN107688502B (zh) | 进程间通信方法及装置 | |
CN109726076B (zh) | 一种小程序生命周期管理方法和系统 | |
US10592312B2 (en) | Message oriented middleware with integrated rules engine | |
CN113900834B (zh) | 基于物联网技术的数据处理方法、装置、设备及存储介质 | |
CN113835887B (zh) | 显存的分配方法、装置、电子设备及可读存储介质 | |
KR20210046606A (ko) | 블록체인의 스마트 계약 구현 방법, 장치, 기기 및 매체 | |
CN115686805A (zh) | Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置 | |
CN115904761A (zh) | 片上系统、车辆及视频处理单元虚拟化方法 | |
CN111611086A (zh) | 信息处理方法、装置、电子设备和介质 | |
CN116662039B (zh) | 基于共享内存的工业信息并行检测方法、装置及介质 | |
CN108197029B (zh) | 一种获取进程信息的方法和设备 | |
CN117850707A (zh) | 日志打印方法、装置、设备、存储介质以及车辆 | |
US20200380386A1 (en) | Use machine learning to verify and modify a specification of an integration interface for a software module | |
CN114610446B (zh) | 一种自动注入探针的方法、装置及系统 | |
US20230244966A1 (en) | Machine learning deployment platform | |
CN109933444A (zh) | 一种寄宿应用间的即时通讯方法 | |
CN115599268A (zh) | 一种屏幕截图方法、计算设备和存储介质 | |
CN112764729A (zh) | 应用软件开发方法、装置、计算机设备及可读存储介质 | |
CN113806035A (zh) | 分布式调度方法及业务服务器 | |
CN113468713A (zh) | 业务仿真方法、装置、计算机设备及存储介质 | |
CN114416381B (zh) | 处理资源超分方法、装置、设备及存储介质 | |
CN115222041B (zh) | 用于模型训练的图生成方法、装置、电子设备及存储介质 | |
CN114217872B (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 |