[發明專利]一種基于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.szxzyx.cn/pat/books/201310684489.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:號碼更換通知方法及系統
- 下一篇:一種口腔真菌抑菌劑及制備方法





