[发明专利]一种基于Linux消息队列的日志处理方法在审
申请号: | 201310684489.4 | 申请日: | 2013-12-16 |
公开(公告)号: | CN103838624A | 公开(公告)日: | 2014-06-04 |
发明(设计)人: | 刘续东 | 申请(专利权)人: | 浪潮电子信息产业股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F11/34 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 250014 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux 消息 队列 日志 处理 方法 | ||
技术领域
本发明涉及计算机应用技术领域,具体的说是一种基于Linux消息队列的日志处理方法。
背景技术
目前在Linux操作系统中,存在很多日志处理系统。在软件的执行过程中记录日志是一种记录软件执行过程和行为,进而调试软件、排查问题的有效方式。对于解决软件执行过程中因遇到异常事件而产生的难以复现的错误等具有什么重要的作用。然而,大部分日志处理系统并不支持多个进程和线程同时向同一个日志文件记录日志信息。而有些时候,软件设计和开发人员希望能够将多个进程或线程的执行过程写到同一个日志文件中,以便更好地反映程序执行的过程,方便日志的记录和查看。
比如某个软件有多个进程在运行,若为每一个进程创建一个日志文件,则对日志信息的管理和维护带来了很多不便,也使得查看日志信息变得麻烦。另外,通常日志信息记录的时间都是精确到秒,而在一秒内可能会产生很多的日志信息,这样就无法区分多个进程在这一秒内执行的先后顺序,因为它们分布在不同的文件中,并且标记着相同的时间。在处理死锁和同步问题时,这一点显得尤为重要,因为在这样的情况下,事件发生的先后顺序正是发现和解决问题的关键。另外,有的软件可能由多个进程组成,而每个进程又可能由多个线程组成,这样对其并行运行过程中产生的日志信息的处理就更为复杂。在硬件所能提供的并行处理能力不断提高的情况下,软件的并行执行已经成为必然的趋势,这已是不争的事实。可见,在当今的软件设计和实现当中,能够将多个进程和多个线程产生的日志信息写入到同一个文件的日志处理系统是十分必要的。
发明内容
本发明的技术任务是解决现有技术的不足,提供一种基于Linux消息队列的日志处理方法。
本发明的技术方案是按以下方式实现的,该一种基于Linux消息队列的日志处理方法,其具体处理过程为:
一、创建日志处理系统:
1)在Linux操作系统中,将系统接受日志文件的路径作为参数;
2)若路径为相对路径,则将其转化为绝对路径;
3)创建一个无名管道,用于将要创建的日志服务进程与现有进程的通信;
4)创建一个新的进程,使其存在父、子两个进程;
5)子进程关闭无名管道的读端描述符;
6)父进程关闭无名管道的写端描述符;
7)若父进程在超时时间内从管道读端未读到日志系统启动成功标志,则结束子进程的运行,并返回错误;
8)若父进程在超时时间内从管道读端读到日志系统启动成功标志,则为该进程注册退出处理函数,之后进行其它处理流程;
9)子进程为各信号设置处理函数,为SIGALRM信号设置处理函数作用为日志轮转,为SIGUSR1信号设置信号处理函数为退出日志系统信号;
10)子进程将日志路径通过哈希算法得到一个4个字节的整型值,作为创建消息队列的键值;
11)子进程按步骤10)中所得到的哈希值作为键值创建消息队列;
二、对日志进行处理:
12)子进程创建日志文件,若日志文件所在路径中,有目录不存在,则一并创建;
13)日志处理系统向管道写段写入启动成功标志后,关闭管道写端;
14)日志处理系统根据当前时间,设置闹钟信号;
15)日志处理系统接收消息队列发送端的消息;
16)日志处理系统为消息加上时间戳后写入到文件中;
17)日志处理系统回到步骤15);
18)若日志处理系统达到日志轮转时间,会收到SIGALRM信号,该信号的处理函数会以当天日期为名字创建一个目录,之后将日志文件移至该目录。
所述日志处理系统每次最多写入4K字节的日志信息。
本发明与现有技术相比所产生的有益效果是:
本发明的一种基于Linux消息队列的日志处理方法可以将多个进程或线程产生的日志信息写入到同一个日志文件中,并且支持多进程与多线程混合情况下向同一个日志文件记录日志;本发明还提供了简单易用的函数调用接口,以实现使用的方便;使用该系统,能够简单、方便的记录日志;对并行软件执行过程中产生的日志信息进行更加精确的控制和记录,以反映并行程序运行过程中各个事件产生的时间和顺序,使得在Linux操作系统中,能够提供一种满足更高要求的日志处理系统,并且解决用户需求多样化和细致化的问题;实用性强,易于推广。
具体实施方式
下面对本发明的一种基于Linux消息队列的日志处理方法作以下详细说明。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮电子信息产业股份有限公司,未经浪潮电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310684489.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:号码更换通知方法及系统
- 下一篇:一种口腔真菌抑菌剂及制备方法