麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種通過進程間通信實現軟件日志實時監控的方法

文檔序號:6438668閱讀:792來源:國知局
專利名稱:一種通過進程間通信實現軟件日志實時監控的方法
技術領域
本發明涉及通信技術領域,尤其涉及一種通過進程間通信實現軟件日志實時監控的方法。
背景技術
為實現對目標軟件運行狀態、流程等的跟蹤,便于發現或定位問題,需要在目標軟件中嵌入一定的日志數據。通過分析日志數據掌握目標軟件的運行情況、定位運行異常。目前,使用傳統日志如系統日志、標準I/O輸出或文件日志記錄,上述記錄目標軟件日記,都有較多缺陷,不能很好的實時顯示和分析日志,對于軟件運行異常時的日志,不能很及時地發現,對于一些軟件產生的問題也難實時跟蹤;如系統日志不能較全面收集日志;標準I/O只能輸出文本且難對產生的日志進行分析;文件日志對軟件有較大的性能影響。

發明內容
本發明的目的在于提供一種通過進程間通信實現軟件日志實時監控的方法,具有實時分析和監控的特點。本發明的目的是通過以下技術方案實現的。一種通過進程間通信實現軟件日志實時監控的方法,包括 啟動日志軟件,建立日志軟件與目標軟件進程間通信通道; 目標軟件生成日志;
通過目標軟件和日志軟件間的進程間通信通道將日志傳遞給日志軟件; 日志軟件實時接收日志,并輸出給用戶。優選的,所述進程間通信包括消息管道,消息隊列,信號量,共享存儲或套接口 SOCKET。優選的,所述共享存儲包括共享內存和共享文件。優選的,所述進程間通信為共享內存方式時,具體包括
a 啟動日志軟件創建共享內存和用于共享內存的同步信號量; b 啟動目標軟件打開共享內存,獲取同步信號量,建立和日志軟件的進程間通信通
道;
c 目標軟件生成日志,將日志寫入共享內存,通過設置信號量通知日志數據的產生; d:日志軟件檢測到信號量的信號,從共享內存中讀取日志后輸出。優選的,步驟c中目標軟件將生成的日志使用序列化的方法轉成二進制流,將二進制流寫入共享內存。優選的,步驟d中日志軟件讀取共享內存中的二進制流,將二進制流反序列化為原始數據后輸出。優選的,所述目標軟件包括能生成日志的系統軟件和應用軟件。
優選的,步驟d中日志軟件將日志的輸出方式采用實時界面顯示,或者指定文件存儲。本發明與現有技術相比,本發明采用日志生成和傳送獨立方式,在沒有運行日志軟件下能自動去掉日志生成步驟,減少大量日志對軟件運行的影響。采用進程間通信,有良好的弱耦合和通信性能。采用獨立的日志客戶端,具有強大的日志實時監控能力。


圖1是本發明軟件日志實時監控的方法流程圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。在介紹本發明前,先對進程間通信這個概念作一介紹。進程間通信就是在不同進程之間共享和交換數據的機制,進程間通信主要包括消息管道,消息隊列,信號量,共享存儲(共享內存和共享文件),SOCKET等。消息管道(匿名管道Anonymous Pipes)、命名管道Named Pipes):用于設置應用程序間的一條永久通信通道,通過該通道可以象自己的應用程序訪問一個平面文件一樣讀寫數據。匿名管道單向流動,并且只能夠在同一電腦上的各個進程之間流動。命名管道 雙向流動,任何進程都可以輕易的抓住,放進管道的數據有固定的格式,只能讀取該大小的倍數。消息隊列就是消息的一個鏈表,它允許一個或多個進程向它寫消息,一個或多個進程從中讀消息。消息隊列管理器在將消息從它的源中繼到它的目標時充當中間人。隊列的主要目的是提供路由并保證消息的傳遞;如果發送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。信號(Signals )量是操作系統通過信號來通知進程。系統中發生了某種預先規定好的事件(一組事件中的一個),它也是用戶進程之間通信和同步的一種原始機制。在一個信號的生命周期中有兩個階段生成和傳送。當一個事件發生時,需要通知一個進程,這時生成一個信號。當進程識別出信號的到來,就采取適當的動作來傳送或處理信號。在信號到來和進程對信號進行處理之間,信號在進程上掛起。共享內存通常由一個進程創建,其余進程對這塊內存區進行讀寫。對于共享內存, 系統無法對其做同步,需要程序自己來對共享的內存做出同步計算,而這種同步很多時候就是用信號量實現。共享文件和共享內存一樣,只是把存儲介質改為文件。SOCKET (套接口)可以看作是進程間通信的端點(endpoint),每個套接口的名字都是唯一的,其他進程可以發現、連接并且與之通信。通信域用來說明套接口通信的協議,不同的通信域有不同的通信協議以及套接口的地址結構等。下面以共享內存為例,實現軟件日志實時監控包括
啟動日志軟件,日志軟件首先創建好共享內存和用于共享內存的同步信號,這個共享內存用一個約定的ID表示,其它任何進程都可以通過這個ID打開共享內存。
啟動目標軟件后,用約定的ID嘗試打開共享內存,如果返回共享內存不存在,就關閉所有日志輸出,這樣日志的輸出就不會影響目標軟件的性能;打開共享內存成功后,獲取共享內存同步的信號量,這樣目標軟件和日志軟件的跨進程通信通道就建立完成。目標軟件生成日志,將日志數據使用序列化的方法轉成二進制流,將二進制流寫入共享內存,然后設置信號量通知日志數據的產生。日志軟件檢測到信號量的信號,從共享內存中讀取日志的二進制流,反序列化后輸出。其輸出的方式可以為實時界面上顯示,或者指定某個文件存儲,具體輸出的內容可以按照用戶的要求進行篩選或者不進行任何篩選。其中,目標軟件包括能生成日志的系統軟件和應用軟件,日志軟件為能接收目標軟件生成日志的軟件。下面結合附圖和實施例對本發明作進一步的詳細說明
請參閱圖1,該圖通過進程間通信實現軟件日志實時監控過程,包括以下步驟 步驟10廣103 啟動日志軟件后,由日志軟件創建好共享內存和用于共享內存的同步信號,用于進程間通信,這個共享內存用一個在整個系統是唯一的ID表示,其它任何進程都可以通過這個ID與它通信。步驟10Γ106 啟動目標軟件,目標軟件用約定的ID嘗試打開共享內存,如果返回共享內存不存在,就關閉所有日志輸出;打開共享內存成功后,獲取共享內存同步的信號量,建立和日志軟件的進程間通信通道。步驟107 109 目標軟件將生成的日志使用序列化的方法轉成二進制流,將二進制流寫入共享內存,然后設置信號量通知日志數據的產生。步驟11(T112 日志軟件檢測到信號量的信號,發現有日志生成。讀取共享內存中的二進制流,將二進制流反序列化為原始數據后輸出,這樣日志軟件完成了從共享內存中讀取并還原日志的過程。以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種通過進程間通信實現軟件日志實時監控的方法,其特征在于,包括 啟動日志軟件,建立日志軟件與目標軟件進程間通信通道;目標軟件生成日志;通過目標軟件和日志軟件間的進程間通信通道將日志傳遞給日志軟件; 日志軟件實時接收日志,并輸出給用戶。
2.如權利要求1所述的通過進程間通信實現軟件日志實時監控的方法,其特征在于, 所述進程間通信包括消息管道,消息隊列,信號量,共享存儲或套接口 SOCKET。
3.如權利要求2所述的通過進程間通信實現軟件日志實時監控的方法,其特征在于, 所述共享存儲包括共享內存和共享文件。
4.如權利要求3所述的通過進程間通信實現軟件日志實時監控的方法,其特征在于, 所述進程間通信為共享內存方式時,具體包括a 啟動日志軟件創建共享內存和用于共享內存的同步信號量; b 啟動目標軟件打開共享內存,獲取同步信號量,建立和日志軟件的進程間通信通道;c 目標軟件生成日志,將日志寫入共享內存,通過設置信號量通知日志數據的產生; d:日志軟件檢測到信號量的信號,從共享內存中讀取日志后輸出。
5.如權利要求4所述的通過進程間通信實現軟件日志實時監控的方法,其特征在于, 步驟c中目標軟件將生成的日志使用序列化的方法轉成二進制流,將二進制流寫入共享內存。
6.如權利要求5所述的通過進程間通信實現軟件日志實時監控的方法,其特征在于, 步驟d中日志軟件讀取共享內存中的二進制流,將二進制流反序列化為原始數據后輸出。
7.如權利要求1所述的通過進程間通信實現軟件日志實時監控的方法,其特征在于, 所述目標軟件包括能生成日志的系統軟件和應用軟件。
8.如權利要求4所述的通過進程間通信實現軟件日志實時監控的方法,其特征在于, 步驟d中日志軟件將日志的輸出方式采用實時界面顯示,或者指定文件存儲。
全文摘要
本發明提供了一種通過進程間通信實現軟件日志實時監控的方法,包括啟動日志軟件,建立日志軟件與目標軟件進程間通信通道;目標軟件生成日志;通過目標軟件和日志軟件間的進程間通信通道將日志傳遞給日志軟件;日志軟件實時接收日志,并輸出給用戶。本發明采用日志生成和傳送獨立方式,在沒有運行日志軟件下能自動去掉日志生成步驟,減少大量日志對軟件運行的影響;采用進程間通信,有良好的弱耦合和通信性能;采用獨立的日志客戶端,具有強大的日志實時監控能力。
文檔編號G06F9/54GK102508765SQ20111036562
公開日2012年6月20日 申請日期2011年11月17日 優先權日2011年11月17日
發明者周恒恭 申請人:深圳市中興移動通信有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 章丘市| 菏泽市| 新疆| 怀化市| 新泰市| 北安市| 丰镇市| 普兰店市| 遂平县| 新乡市| 乌审旗| 游戏| 眉山市| 卢氏县| 巨鹿县| 修文县| 广德县| 类乌齐县| 封开县| 新平| 石首市| 民和| 双鸭山市| 观塘区| 青阳县| 衡山县| 来宾市| 南投县| 肥东县| 连平县| 南溪县| 金川县| 五家渠市| 兴化市| 利川市| 桃江县| 湟源县| 扎鲁特旗| 黄石市| 瑞金市| 湖北省|