亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Web Service Appender 管理日志紀錄

2019-11-18 12:50:32
字體:
來源:轉載
供稿:網友

  引言
  
  你可以使用 Web Service Appender 將日志集中到某一位置,同時,Web Service Appender 答應治理者監控、開發者調試面向服務架構(SOA)環境里可能存在的任何問題。Web Service Appender 是一種擴展 java 類,它由 Log4j 的 Appender 類擴展而來。
  
  從定義上看,SOA 是一種彼此可以互相通信的服務集合,但這些服務的內容是各自獨立的,每一類服務均不受其它服務內容或服務狀態的影響,并且這些服務都工作在分布式的系統架構里。在 SOA 中,Web 服務通常被用來在給定事務中處理請求,這些請求可以是遺留代碼、企業級 Java Beans(EJBs) 的封裝,也可以是 Java 類的封裝,使用一種可以將日志信息聚集在中心位置里的日志紀錄方法,能幫助您隔離缺陷和問題,并能讓你更好的理解邏輯流的處理。
  
  將特定模塊或服務的日志消息紀錄到一個中心位置的機制,可以把可能潛在的問題和缺陷降低到最小。
  
  本文對 Log4j 的功能進行了大體的概述,并介紹了如何編寫自定義的 Log4j Appender,這類非凡的 Appender 將日志消息編到一種特定的 Web 服務。
  
  Log4j 快速入門
  
  Log4j 是一種開放源代碼的日志庫,它已被發展為 Apache Software Foundation 日志服務項目的子項目。該庫是以 IBM 在 90 年代末開發的日志庫為基礎的,第一版發布于 1999 年。現在它在開放源代碼團體得到了廣泛使用,它的體系是圍繞以下三個主要概念構建起來的:
  
  Logger
  
  Appender
  
  Layout
  
  這些概念可以讓您根據消息類型、消息優先級來紀錄消息,您可以控制消息在何處結束及消息如何格式化。 Logger 是應用程序首先調用以初始化消息紀錄的對象。當把某一消息傳遞給日志時,logger 會生成 LoggingEvent,對消息進行封裝。之后,Logger 對象將 LoggingEvent 傳遞給與之關聯的 Appender。
  
  Appender 將 LoggingEvent 所包含的消息發送給指定的目標輸出文件。所謂指定的文件,大多數情況下,是 Log4 屬性文件。一些 Appender 存在于 Log4j 中。您也可以擴展 Appender,使之支持其它的目標文件,比如 xml 文件、控制臺等等。
  
  在 Log4j 里, LoggingEvent 被賦予某一級別,以表明它們的優先級。缺省的級別包括如下幾種:
  
  OFF:可能是最高的級別,它是用來關閉日志紀錄的
  
  FATAL:指出現了非常嚴重的錯誤事件,這些錯誤可能會導致應用程序異常中止
  
  ERROR:指雖有錯誤,但仍答應應用程序繼續運行
  
  WARN:指運行環境潛藏著危害
  
  INFO:指報告信息,這些信息在粗粒度級別上突出顯示應用程序的進程
  
  DEBUG:指細粒度信息事件,細粒度信息事件對于應用程序的調試是最有用的
  
  ALL:可能是最低的級別,其目的是打開所有日志記錄
  
  Logger 和 Appender 也被賦予上述的某一級別,并且僅執行等于或高于它們自身的級別的日志請求。比如,假如一個 Appender 屬于 INFO 級別,而日志請求屬于 DEBUG,那么 Appender 將不會為給定的日志事件寫消息。
  
  客戶端組件
  
  客戶端 log4j.PRoperties 文件
  
  客戶端 log4j.properties 文件是一種標準文件,它包含服務或模塊使用的所有 Appender。Web Service Appender 要求有一個端點(endpoint) 屬性以指定所使用的日志服務。
  
  清單 1 描述了使用 WebServiceAppender 所必需的 Web 服務客戶端 Log4j 屬性。 黑體顯示的文本指明了將訪問 WebServiceAppender 服務器端的 Appender。屬性文件是使用 Log4j 的基本需求,它可以讓您配置應用程序以使用多個 Appender 以及 logging severity。一旦應用程序進入運行狀態或潛在的問題得到解決,您就可以輕松地修改屬性文件。
  
  清單 1:客戶端 Log4j 的屬性文件
  
  #set the level of the root logger log
  4j.rootLogger = INFO, CONSOLE
  #set own loggerlog
  4j.logger.com.carmelouria.logging.test=CONSOLElog
  4j.appender.CONSOLE=com.carmelouria.logging.WebServiceAppenderlog
  4j.appender.CONSOLE.endpoint=
  http://localhost:9080/log
  4j/services/LogAppenderServicelog
  4j.appender.CONSOLE.layout=org.apache.log
  4j.PatternLayoutlog
  4j.appender.CONSOLE.layout.ConversionPattern=%p [%t] %c{2} (%M:%L) :: %m%n
  
  服務器的 Log4j.properties 文件
  
  服務器 Log4j.properties 文件被用來關聯客戶端 Log4j 屬性文件,它指定了日志的級別及服務器將如何輸出消息。對于支持 Log4j 的應用程序,您可以定義多個 appender。當然,這些 appender 既可以用于客戶端服務,也可以用于服務模塊。
  
  清單 2 描述了一份典型的 Log4j 屬性文件,服務器端的 WebServiceAppender 使用缺省的 Log4j Appenders。服務器端的 Appender 可以潛在的調用另一個 WebServiceAppender,并將日志信息鏈接起來:
  
  清單 2:服務器端的 Log4j 屬性文件
  
  #set the level of the root logger log
  4j.rootLogger = INFO, FILE
  #set own loggerlog
  4j.appender.FILE=org.apache.log
  4j.RollingFileAppenderlog
  4j.appender.FILE.file=c:/temp/log
  4j/server/server.loglog
  4j.appender.FILE.layout=org.apache.log
  4j.PatternLayoutlog
  4j.appender.FILE.layout.ConversionPattern=%p [%t] %c{2} (%M:%L) :: %m%n
  
  客戶端程序測試示例:
  
  這個客戶端程序示例是無格式普通 Java 對象(POJO),它記錄了一條消息,并被配置為使用 Web Service Appender 來處理消息。清單 3 顯示了這個示例:
  
  清單 3:客戶端應用程序使用 WebServiceAppender 的示例
  
  package com.carmelouria.logging.test;
  import org.apache.log4j.Level;
  import org.apache.log4j.Logger;
  import org.apache.log4j.PropertyConfigurator;
  /**
  * @author Carmelo Uria
  *
  */public class LoggingSample
  {
  private static Logger logger = Logger.getLogger(LoggingSample.class.getName());
  /**
  *
  */
  public LoggingSample()
  {
  super();
  PropertyConfigurator.configure("c:/temp/log4j.properties");
  logger.log(Level.INFO, "LoggingSample instantiation...");
  System.out.println("finished...");
  }
  public static void main(String[] args)
  {
  LoggingSample sample = new LoggingSample();
  }
  }
  
  WebServiceAppender
  
  WebServiceAppender 是必需的,它可以將消息發送到指定的 Web 服務。WebServiceAppender 繼續了 org.log4j.Appender,它答應使用 log4.properties,并成為有效的 Log4j Appender。
  
  WebServiceAppender 使用基于 XML 的遠程過程調用 (JAX-RPC) 的 Java API,來將消息發送到服務器。JAX-RPC 是一種規范,它描述使用 RPC 和 XML 構建 Web 服務和 Web 服務客戶端的應用編程接口 (API) 和約定。JAX-RPC 又被稱為 JSR 101。
  
  LoggingEvent 通過 SOAPElement 被分割并表示為 XML。javax.xml.soap.SOAPElement 接口意味著服務端點接口將包含一個參數,或返回 javax.xml.soap.SOAPElement 類型的值,以對應于 schema 中每個使用的地方。從本質上看,它是 XML 參數的封裝,且沒有相應的序列化/反序列化 JAVA 類。例如,一旦客戶請求記錄一個消息,就會創建一個 LoggEvent 對象,然后傳送給 Appender。在這種情況下,Appender 就是 WebServiceAppender。Appender 檢索事件,并在解析事件中的信息。一些額外的信息會被加入,如主機名稱,這樣您就知道這些消息來自哪個系統。同時,append 方法也將消息轉換為 SOAPElement,這樣就可以通過 executeWebService 方法將消息傳遞給 Web 服務。使用 SOAPElement 充分考慮了 WebServiceAppender 未來版本的可擴展性問題。
  
  清單4:執行 WebServiceAppender 服務的 Append 方法
  
  protected void append(LoggingEvent event)
  {
  // create Web Service client using endpoint
  if (endpoint == null)
  {
  System.out.println("no endpoint set. Check configuration file");
  System.out.println("[" + hostname + "] " + this.layout.format(event));
  return;
  }
  executeWebService(event);
  }
  private void executeWebService(LoggingEvent event)
  {
  SoapClient client = new SoapClient();
  URL endPoint = null;
  try
  {
  endPoint = new URL(getendpoint());
  }
  catch (MalformedURLException e1)
  {
  e1.printStackTrace();
  }
  String nameSpace = "http://ejb.logging.carmelouria.com";
  QName serviceName = new QName(nameSpace, "LogAppenderServiceService");
  QName Operation = new QName(nameSpace, "log");
  QName port = new QName(nameSpace, "LogAppenderService");
  Parameter message =
  new Parameter("log", Constants.XSD_ANY, SOAPElement.class, ParameterMode.IN);
  try
  {
  /

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品高精视频免费| 亚洲3p在线观看| 成人激情视频免费在线| 日韩欧美在线免费观看| 久久久久久久久久久亚洲| 精品久久久久久久久久久久| 亚洲图片制服诱惑| 韩曰欧美视频免费观看| 中文字幕精品www乱入免费视频| 91中文字幕在线观看| 国产精品尤物福利片在线观看| 永久免费看mv网站入口亚洲| 91伊人影院在线播放| 中文字幕亚洲在线| 欧美二区在线播放| 国产亚洲欧美日韩一区二区| 午夜免费在线观看精品视频| 91中文字幕一区| 久久久999精品| 国产视频精品在线| 亚洲国产中文字幕久久网| 亚洲国产小视频在线观看| 久久久精品国产网站| 亚洲国产97在线精品一区| 久久精品国产91精品亚洲| 国产精品2018| 国产拍精品一二三| 欧美另类老女人| 亚洲片av在线| 欧美丝袜一区二区| 亚洲毛片在线看| 欧美色播在线播放| 伊人成人开心激情综合网| 激情懂色av一区av二区av| 成人免费在线网址| 国语自产偷拍精品视频偷| 91sao在线观看国产| 日韩av在线免费观看一区| 欧美激情精品久久久久久免费印度| 日韩免费高清在线观看| 国产精品吹潮在线观看| 91精品视频在线免费观看| 欧美精品制服第一页| 97人人模人人爽人人喊中文字| 91亚洲国产精品| 亚洲大尺度美女在线| 91av在线不卡| 日韩中文av在线| 日本在线精品视频| 国产91成人在在线播放| 亚洲国产91色在线| 国产精品久久久久不卡| 国产欧美精品一区二区三区介绍| 色诱女教师一区二区三区| 国产一区视频在线| 91国产美女在线观看| 亚洲电影免费观看高清完整版在线| 成人黄色影片在线| 欧美午夜影院在线视频| 欧美一区二区三区精品电影| 久久亚洲精品小早川怜子66| 欧美成人激情视频| 色偷偷av一区二区三区| 欧美精品999| 国产精品久久久久久亚洲影视| 日本成人精品在线| 国产精品国产亚洲伊人久久| 欧美性xxxx极品高清hd直播| 6080yy精品一区二区三区| 欧美激情欧美激情在线五月| 国产一区二区精品丝袜| 亚洲天堂av网| 欧洲成人在线观看| 亚洲色图17p| 亚州成人av在线| 中文字幕无线精品亚洲乱码一区| 欧美午夜视频在线观看| 国产欧美日韩精品丝袜高跟鞋| 国产v综合v亚洲欧美久久| 国产精品福利小视频| 久久精品国产一区| 亚洲视频电影图片偷拍一区| 蜜臀久久99精品久久久久久宅男| 亚洲欧美日本伦理| 日本欧美精品在线| 日韩激情av在线播放| 久久影视电视剧免费网站清宫辞电视| 久久久久日韩精品久久久男男| 丁香五六月婷婷久久激情| 国产成人精品免高潮在线观看| 成人免费大片黄在线播放| 隔壁老王国产在线精品| 成人在线免费观看视视频| 日韩国产欧美区| 啊v视频在线一区二区三区| 成人免费在线视频网址| 亚洲男人第一av网站| 日本久久久久亚洲中字幕| 欧美亚洲一级片| 亚洲男子天堂网| 丝袜亚洲欧美日韩综合| 久久精品国产69国产精品亚洲| 欧美剧在线观看| 国产精品色婷婷视频| 欧美午夜宅男影院在线观看| 国产欧美日韩精品丝袜高跟鞋| 亚洲直播在线一区| 久热爱精品视频线路一| 久久久久久国产精品| 成人淫片在线看| 久久成年人免费电影| 国产精品99久久久久久人| 成人自拍性视频| 国产亚洲欧洲在线| 国产成人综合久久| 亚洲免费av电影| 亚洲男人天堂2019| 国内精品久久久久久中文字幕| 亚洲精品国产欧美| 日韩在线中文视频| 91国产精品91| 精品国产一区二区三区久久狼黑人| 国产精品露脸av在线| 亚洲最新在线视频| 欧美成人精品在线视频| 日韩中文在线观看| 久久精品国产亚洲7777| 国产精品户外野外| 亚洲人成77777在线观看网| 91成品人片a无限观看| 91久久国产婷婷一区二区| 日韩在线国产精品| 成人黄色免费网站在线观看| 欧美一乱一性一交一视频| 91久久精品国产| 亚洲成人久久久| 欧美精品电影免费在线观看| 91精品国产高清久久久久久| 高清日韩电视剧大全免费播放在线观看| 亚洲男人天堂2024| 国产精品国模在线| 亚洲精品免费一区二区三区| 国模视频一区二区三区| 成人免费直播live| 日韩经典中文字幕| 欧美日韩一区二区三区| 欧美精品日韩www.p站| 日韩免费中文字幕| 国产精品高潮呻吟视频| 日本在线精品视频| 国产精品视频免费在线观看| 亚洲人午夜精品免费| 中文字幕亚洲无线码a| 亚洲精品成人久久电影| 国产精品久久一区| 伊人成人开心激情综合网| 日韩精品久久久久久久玫瑰园| 性欧美暴力猛交69hd| 国产日韩在线免费| 成人免费观看网址| 成人乱色短篇合集| 亚洲肉体裸体xxxx137| 亚洲国产精久久久久久久| 精品无码久久久久久国产|