中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

如何進行JDK日志框架中的STAF淺析

本篇文章給大家分享的是有關如何進行JDK日志框架中的STAF淺析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于網站設計制作、成都做網站、天等網絡推廣、成都小程序開發、天等網絡營銷、天等企業策劃、天等品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供天等建站搭建服務,24小時服務熱線:13518219792,官方網址:m.2m8n56k.cn

JDK日志框架之實例結合STAF,STAF 日志服務概念的提出,這方面是什么情況呢?讓我們首先從什么是STAF開始。

STAF(Software Testing Automation Framework)是一個自動化軟件測試框架,它可以實現分布式的自動化軟件測試管理。我們可以應用 STAF 庫的 Java API 來做基于 STAF 框架的應用,同時 STAF 同時也提供了日志服務。其日志服務是用來記錄自動化測試流程中的信息,方便在 24x7 的自動化測試中記錄自動化測試的操作,便于發現潛在的自動化測試管理腳本的問題。

既然我們可以用 STAF 的 Java API 來做基于 STAF 的應用,我們也可以將JDK 的日志框架同 STAF 的日志服務接口結合起來。 STAF 的日志服務的 java 接口定義如清單 7 所示:

清單 7 STAFLog 類定義

public class STAFLog   {   public STAFLog(String logType, String logName, STAFHandle handle);   public STAFResult log(int level, String msg)   // Log type constAnts   public static STAFResult log(STAFHandle theHandle, String logType,    String logName, int level, String msg)   public String getName();   public String getLogType();   public int getMonitorMask();   ... //other methods   }


從清單 7 我們可以看出,STAFLog 類提供了方法可以將日志信息存儲到 STAF 的日志庫中, 這個日志庫既可以是本地的文件,也可以是另一個 STAF 服務器上的JDK日志庫。這是通過本地 STAF 服務器的配置來決定的。而 STAFLog.log() 方法只用于記錄日志信息。

將 STAF 日志服務的 java API 同JDK日志框架結合起來需要做如下步驟:

創建 STAF 日志 Handler 類

該類封裝了 STAF 日志服務 API 的接口。同時 STAF 的 Java API 需要一個全局的 STAFHandle 對象,用來表示本地的 STAF 服務句柄。這個可以通過建立一個靜態的 STAFHandle 對象即可。其代碼如下所示,我們定義了一個 STAFHandler 類如清單 8 所示。

清單 8 STAFHandler 類實現

import java.util.logging.*;   import com.ibm.staf.wrapper.STAFLog;    public class STAFHandler extends Handler {   private String logName;   private static STAFHandle stafHandle = null;   public STAFHandler(String name) {   configure();   logName = name;   }   public STAFHandler() {   configure();   }    @Override   public void close() throws SecurityException {   if (stafHandle != null){   try {   stafHandle.unRegister();   } catch (STAFException e) {   //ignore   }   }   }    @Override   public void flush() {   //nothing   }    @Override   public void publish(LogRecord record) {   if (!isLoggable(record)) {   return;   }   String msg;   try {   msg = getFormatter().format(record);   } catch (Exception ex) {   reportError(null, ex, ErrorManager.FORMAT_FAILURE);   return;   }    try {   STAFLog.log(stafHandle, STAFLog.MACHINE,   logName, record.getLevel().getName(), msg);   } catch (Exception ex) {   reportError(null, ex, ErrorManager.WRITE_FAILURE);   }    ...


在實現 STAFHandler 類時有以下幾個要點:

1、由于 STAF API 的調用時需要一個 STAFHandle 的對象來代表本地的 STAF 服務,在該類中聲明了一個全局變量用來存儲 STAFHandle .

2、close 方法是用來清理系統資源的,上述代碼的 close 方法中釋放了全局變量 STAFHandle 對象。

3、publish 方法就是獲得格式化后的消息后,直接調用 STAF 的日志 API 將日志發送到 STAF 服務中。

但到目前為止,我們還沒有給 STAFHandler 類添加一個配置的代碼,使之可以支持配置文件。下面我們定義了一個函數 configure,其代碼如清單 9 所示。

清單 9 配置函數實現

private void configure() {  if (stafHandle == null) {  try {  stafHandle = new STAFHandle("my application");  } catch (STAFException e) {  reportError("registe staf handle error", e, ErrorManager.OPEN_FAILURE);  }  }   LogManager manager = LogManager.getLogManager();  String cname = getClass().getName();  //set staf log name  logName = manager.getProperty(cname + ".name");  if (logName == null)  logName = "demo.staflog";   //set formatter  String sformatter = manager.getProperty(cname + ".formatter");  Formatter formatter = null;  if (sformatter != null) {  try {  formatter = (Formatter)Class.forName(sformatter).newInstance();  } catch (Exception e) {  //ignore  }  }   setFormatter(formatter == null? new STAFFormatter() : formatter);   //set level  String sLevel = manager.getProperty(cname + ".level");  Level level = null;  if (sLevel != null) {  try {  level = STAFLevel.parse(sLevel);  } catch (Exception e) {  //ignore  }  }  setLevel(level == null? STAFLevel.DEBUG : level);  }


在實現配置文件支持的代碼中,有以下幾個要點:

1、STAF API 的初始化需要注冊 STAFHandle 對象。而且該注冊只能執行一次。我們根據全局變量 stafHandle 的值來決定是否注冊該對象。

2、JDK的日志框架有一個全局的 singleton 管理類 STAFManager,該類用于管理日志類,并提供了讀取日志配置文件的成員函數 getProperty 。在上述的代碼中,我們通過 STAFManager.getProperty 方法,從日志配置文件中讀取 STAFHandler 對象所設置的 Formatter 類名,然后通過反射生成一個新的 Formatter 對象,設置到 Handler 對象中。

3、對于日志級別也是通過 STAFManager.getProperty 方法。需要注意的是由于我們的日志級別是自定義的級別,所以 Level 對象是由我們自定義的 Level 類 STAFLevel 來生成的。

4、我們也能定義自己需要的屬性。比如清單 9 中我們定義了一個 .name 屬性,用來存儲 STAF 日志名稱,通過 getProperty 函數從配置文件中讀取 .name 屬性。

以上就是如何進行JDK日志框架中的STAF淺析,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創新互聯行業資訊頻道。

本文標題:如何進行JDK日志框架中的STAF淺析
網站地址:http://m.2m8n56k.cn/article0/jdeoio.html

成都網站建設公司_創新互聯,為您提供自適應網站移動網站建設全網營銷推廣關鍵詞優化建站公司虛擬主機

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 全免费a级毛片免费看 | 手机在线国产精品 | 成人a站 | 俄罗斯极品美女毛片免费播放 | 美女被cao免费看在线看网站 | 怡红院亚洲怡红院首页 | 国产精品麻豆一区二区三区v视界 | 一本久道久久综合中文字幕 | 香蕉视频黄在线观看 | 中国一级毛片 | 毛片高清 | 99久久精品免费观看国产 | 在线观看一区 | 久久欧美| 国产一级影片 | 九九九精品视频免费 | 免费高清不卡毛片在线看 | 国产精品免费观看视频 | 特黄a大片免费视频 | 亚洲国产欧美视频 | 日韩高清成人毛片不卡 | 精品三级内地国产在线观看 | 国产精品亚洲精品一区二区三区 | 真人一级毛片 | 99re热这里只有精品视频 | 亚洲国产一区二区a毛片日本 | 一区二区不卡视频在线观看 | 色偷偷在线刺激免费视频 | 全黄a一级毛片 | 日本亚洲成高清一区二区三区 | 香蕉久久夜色精品国产 | a级男女性高爱潮高清试 | 久久亚洲私人国产精品va | 免费人成在观看 | 国产成人亚洲综合无 | 国产自愉自愉全免费高清 | 久久国产欧美另类久久久 | 永久免费91桃色福利 | 欧美成人高清在线视频大全 | 日本一线a视频免费观看 | 亚洲毛片免费在线观看 |