本发明涉及系统维护,特别涉及一种内核日志的输出方法、装置及电子设备。
背景技术:
1、linux系统的kernel(内核)日志即内核日志,用于记录linux系统运行时产生的一系列的内核行为信息。内核日志有助于系统管理员对系统的深入分析,从而维护系统的安全及可靠运行;当系统发生错误时,系统管理员也能通过内核日志进行问题排查,有助于快速解决问题。因此,内核日志对于系统管理员来说有着重要的作用。
2、现有技术中,常用的读取内核日志的方式,是读取/dev/kmsg(一个输出内核信息的节点)节点、/proc/kmsg(一个输出内核信息的节点)节点的数据,并将其取出保存在文件中;或者可以在终端使用dmesg(display message,显示信息)命令读取内核日志。以通过/proc/kmsg节点读取出来的内核日志为例,读取出的内核日志默认格式如图1所示,包含一个时间戳和日志内容;该时间戳是系统开机运行的滴答时钟,记录着生成日志时距离开机时间经过的秒数。然而,当前的内核日志中的时间戳是极不方便的,由于每次开机都是从[0.000000]开始,当运行很长一段时间后,秒数会变得很大,如[43356.330933];使得时间戳不能直观地与系统中的utc(coordinated universal time,世界标准时间,或称协调世界时)时间相匹配,难以快速定位问题发生的时间点,对问题的分析造成很大的阻碍。因此,如何能够提供一种加入utc时间的内核日志输出方案,为用户快速定位问题点和分析内核日志提供便利,提高系统问题分析的效率,是现今急需解决的问题。
技术实现思路
1、本发明的目的是提供一种内核日志的输出方法、装置及电子设备,以在输出的内核日志中加入utc时间,为用户快速定位问题点和分析内核日志提供便利,提高系统问题分析的效率。
2、为解决上述技术问题,本发明提供一种内核日志的输出方法,包括:
3、获取linux系统的内核日志输出命令;
4、根据所述内核日志输出命令,读取存储的各内核日志变量;其中,所述内核日志变量包括用于存储世界标准时间的系统时间变量成员;
5、将各所述内核日志变量转化为字符串形式,获取内核日志;其中,所述内核日志包括所述世界标准时间。
6、在一些实施例中,所述内核日志的前缀中包括所述世界标准时间。
7、在一些实施例中,所述内核日志输出命令为/proc/kmsg节点的内核日志输出命令,所述将各所述内核日志变量转化为字符串形式,获取内核日志,包括:
8、利用get_time_str()函数,将所述系统时间变量成员转化为字符串形式,获取所述内核日志的前缀中的世界标准时间。
9、在一些实施例中,所述内核日志输出命令为/proc/kmsg节点和/或dmesg命令的内核日志输出命令,所述将各所述内核日志变量转化为字符串形式,获取内核日志,包括:
10、利用print_prefix()函数,判断用于写入当前内核日志的前缀的缓冲区是否缓冲区参数为空;其中,当前内核日志为任一所述内核日志;
11、若是,则将当前内核日志的前缀长度调整为当前前缀长度与世界标准时间字符串长度之和,并将所述缓冲区参数调整为非空;
12、若否,则将当前内核日志的前缀写入所述缓冲区。
13、在一些实施例中,所述linux系统中的内核日志对应的前缀长度宏和日志长度宏分别为96和1088。
14、在一些实施例中,所述将各所述内核日志变量转化为字符串形式,包括:
15、将所述系统时间变量成员转化为预设时间格式的字符串形式,获取所述内核日志中的世界标准时间;其中,所述预设时间格式包括年数、月数、日数、时数、分数、秒数、纳秒数。
16、在一些实施例中,所述内核日志变量为struct printk_log类型的变量,所述系统时间变量成员为struct timespec类型的成员。
17、在一些实施例中,该方法还包括:
18、在当前内核日志生成时,获取当前世界标准时间;
19、将当前世界标准时间作为当前内核日志对应的世界标准时间,生成并在前内核日志对应的内核日志变量中存储当前世界标准时间对应的系统时间变量成员;
20、存储当前内核日志对应的内核日志变量。
21、本发明还提供了一种内核日志的输出装置,包括:
22、指令获取模块,用于获取linux系统的内核日志输出命令;
23、日志读取模块,用于根据所述内核日志输出命令,读取存储的各内核日志变量;其中,所述内核日志变量包括用于存储世界标准时间的系统时间变量成员;
24、日志输出模块,用于将各所述内核日志变量转化为字符串形式,获取内核日志;其中,所述内核日志包括所述世界标准时间。
25、此外,本发明还提供了一种电子设备,包括:
26、存储器,用于存储计算机程序;
27、处理器,用于执行所述计算机程序时实现如上述所述的内核日志的输出方法的步骤。
28、本发明所提供的一种内核日志的输出方法,包括:获取linux系统的内核日志输出命令;根据内核日志输出命令,读取存储的各内核日志变量;其中,内核日志变量包括用于存储世界标准时间的系统时间变量成员;将各内核日志变量转化为字符串形式,获取内核日志;其中,内核日志包括世界标准时间;
29、可见,本发明通过在存储的各内核日志的变量中加入用于存储内核日志生成的utc时间的成员,使得输出的内核日志能够包含内核日志生成的utc时间,为用户快速定位问题点和分析内核日志提供便利,提高系统问题分析的效率。此外,本发明还提供了一种内核日志的输出装置及电子设备,同样具有上述有益效果。
1.一种内核日志的输出方法,其特征在于,包括:
2.根据权利要求1所述的内核日志的输出方法,其特征在于,所述内核日志的前缀中包括所述世界标准时间。
3.根据权利要求2所述的内核日志的输出方法,其特征在于,所述内核日志输出命令为/proc/kmsg节点的内核日志输出命令,所述将各所述内核日志变量转化为字符串形式,获取内核日志,包括:
4.根据权利要求2所述的内核日志的输出方法,其特征在于,所述内核日志输出命令为/proc/kmsg节点和/或dmesg命令的内核日志输出命令,所述将各所述内核日志变量转化为字符串形式,获取内核日志,包括:
5.根据权利要求2所述的内核日志的输出方法,其特征在于,所述linux系统中的内核日志对应的前缀长度宏和日志长度宏分别为96和1088。
6.根据权利要求1所述的内核日志的输出方法,其特征在于,所述将各所述内核日志变量转化为字符串形式,包括:
7.根据权利要求1所述的内核日志的输出方法,其特征在于,所述内核日志变量为struct printk_log类型的变量,所述系统时间变量成员为struct timespec类型的成员。
8.根据权利要求1至7任一项所述的内核日志的输出方法,其特征在于,还包括:
9.一种内核日志的输出装置,其特征在于,包括:
10.一种电子设备,其特征在于,包括: