Java測試序列化資料時的計數策略

來源:互聯網
上載者:User

標籤:java   測試日誌   資料處理   

近日測試中遇到一個需求,要使用程式不斷地去監測指定的服務元件是否正在運行,一分鐘檢測一次,如果發現異常,就要將異常的資訊捕獲出來,然後記錄到日誌中,供開發人員排查。

可是在執行的過程中,發現一個問題,產生的日誌在記入檔案的時候,沒有明確的行列標記,非常不便於操作,而且日誌是追加模式的,在分類的情況下,要按分類尋找更加困難。比如:

總共產生了1W條日誌,info層級的8000條,error層級的500條,warning層級1500條,怎麼樣才能很好的組織這些資料,便於找出BUG,便於篩選呢?

我用了兩套序數操縱這些資料,一套序數是每個類別的日誌,有一個自己的序號,同時,還有一個全域的日誌序號,這種情況下,不同的業務單元中產生的日誌,只要推送到我這個單一的進程中,就能實現全域排序記錄,局部也有序列,並且儲存到了同一個檔案中,便於集中處理。

實現如下:

/** *  */package com;/** * @author Administrator * */public class HelloWorld {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubMyLog log1 = new MyLog();MyLog log2 = new MyLog();MyLog log3 = new MyLog();MyLog log4 = new MyLog();MyLog log5 = new MyLog();log1.write(1, "running");log1.write(2, "reopen");log2.write(1, "starting");log2.write(3, "crashed");log2.write(1, "resume");log3.write(1, "stoped");log4.write(1, "prompt");log5.write(2, "network failed");log5.write(1, "network normal");log5.write(2, "thread crash");log5.write(3, "connect failed");}}class MyLog {private static int nSerialNo = 0;// 0是info層級,1是warning層級,2是error層級final int INFO_TYPE = 0;final int WARNNING_TYPE = 1;final int ERROR_TYPE = 2;static int nInfoNo = 0;// 局部序號static int nWarnningNo = 0;static int nErrorNo = 0;private int nGolobalNo = 0;// 全域序號private String strMsg = "";// 日誌訊息public void write(int type, String msg) {strMsg = msg;nGolobalNo = (++nSerialNo);// 0是info層級,1是warning層級,2是error層級switch (type) {case INFO_TYPE:System.out.println("Log[info][" + nGolobalNo + "]" + "[" + (++nInfoNo) + "]:" + strMsg);break;case WARNNING_TYPE:System.out.println("Log[warning][" + nGolobalNo + "]" + "[" + (++nWarnningNo) + "]:" + strMsg);break;case ERROR_TYPE:System.out.println("Log[error][" + nGolobalNo + "]" + "[" + (++nErrorNo) + "]:" + strMsg);break;default:System.out.println("Log[unknow][" + nGolobalNo + "]" + "[" + "-" + "]:" + strMsg);break;}}}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Java測試序列化資料時的計數策略

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.