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

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

理解類加載器:J2EE 環境下的 log4j

2019-11-18 11:47:15
字體:
來源:轉載
供稿:網友

  大綱
  Log4j是一個很流行的日志記錄工具。根據java項目不同的日志需求和調試需求。他可以提供非常靈活的控制。它可以對輸出信息進行分級控制。也可以在運行時改變輸出信息的表現格式。而這一切都不需要改變源程序。
  Log4j用三個對象來控制日志的記錄。Logger,appenders,和layouts。logger會以特定的layouts(樣式)將日志記錄到appenders中。在這個操作過程中經常需要指定具體的外部配置文件。(指定外部配置文件也是最好的一種方式)。這些配置信息會在你的應用開始時加載進來,也可能在運行的時候被改變。
  在使用log4j的時候將會用到以下這些步驟:
  1.寫配置文件,在文件中需要:
  • 指定root logger的級別并且和一個appender綁定
  • 指定appender的屬性
  • 為appender指定一個layout
  2.在你的代碼中,需要根據class或name得到一個logger.典型的一種做法是將logger
  與當前的類的進行關聯。
  3.用你從第二步得到的logger的任何一種方法(log.debug(),log.info(),log.warn
 ?。ǎ?log.error())進行寫日志。
  
  設置安裝
  在這本書的例子是運行在weblogic 7.0 sp2 demo上。我們之所以用weblogic代替開源的產品(如jboss)是因為weblogic為在項目組中配置log4j提出了更多的挑戰。它也是最流行的應用服務器。自從我發表的之前的文章。我收的絕大多數問題都是關于它的。但是這里決不是暗示推薦使用weblogic。這只是提供一個測試環境。說明在j2ee環境下如何配置log4j
  
  Weblogic的設置安裝
  Weblogic7.0sp2可以從BEA's trial page下載。選擇你需要的版本類型進行下載。注重你必須要在bea上面進行一些個人信息的注冊。而且下載的文件很巨大。大約有150M。當然你也有別的選擇。你可以選擇免費的測試CD
  假如你得到了安裝文件。安裝就很簡單了。你只需要按照安裝向導一步一步安裝就可以了。我們的測試環境選擇典型安裝。當安裝到最后,安裝向導會問你是否需要配置Domain.選擇yes然后就會運行Domain的配置向導。第一屏、選擇Domain的類型和名字。選擇WLSDomain作為Domain的類型,給它起個名字叫mydomain.第二屏、設置server的類型為單一server(standalone server).再下一屏選擇缺省路徑做為Domain的路徑,再點擊next為server進行配置。然后一路next就可以了。最后需要你為domain輸入治理員帳號和密碼。我一般就是以admin作為治理員帳號,passWord最為密碼(很原始的做法)。接下來選擇是否將service注冊成windows的services(在windows環境下安裝),一般選擇no。最后選擇yes在windows開始菜單上方置快捷方式。最后點擊create建立Domain.
  運行weblogic就很簡單了。從開始菜單Start->All Programs->BEA WebLogic Platform 7.0->User Projects->mydomain->Start Server這樣可以啟動server.不過更常用的方式是從dos命令行,進入BEA的HOME目錄。進入user_PRojects/mydomain后,運行startWebLogic.cmd.就可以了。啟動的時候會要求你輸入治理員帳號和密碼。最后你可以看到server開始啟動。當你看到Server start in running mode表示啟動成功。假如要關閉你只要關閉Dos窗口就可以了。
  假如你安裝運行成功。你可以在瀏覽器中輸入如下地址http://localhost:7001/console.你會進入webogic的治理界面。你可以對applications和server進行各種配置。當然你要輸入治理員帳號和密碼。就和啟動時輸入的一樣。進入后你可以看到各種治理任務的界面。你也可以執行相應的治理任務。
  log4j的安裝
  和前面提到的一樣。Log4j可以從log4j web site.下載。請按照前面的文章介紹進行下載和安裝log4j的二進制代碼。在這章最后我們會介紹log4j的配置。
  類加載器的概念有什么不一樣。
  雖然有關類加載器的討論在本文以外已經有很多了。但是我還是盡力解釋一下類加載器是如何影響應用服務器中log4j的配置的。
  類加載器。顧名思義,表示在java虛擬機中加載calsses.在我們的class執行和被訪問之前。它必須通過類加載器加載使之有效。給定一個class名字,類加載器會定位class并且將它加載到java虛擬機。但是類加載器本事就是class。這就帶來一個問題。是誰來加載這些類加載器呢。
  當你運行一個java程序。(例如在命令行內輸入java命令),它就會執行并且啟動一個本地的native java launcher(我叫他java 啟動者,估計不太準確注明一下)。這里本地的意思是指針對你的平臺和運行環境而言。這個本地的java啟動者包含一個類加載器,這個類加載器的名字叫做bootstrap 類加載器.(引導類加載器).這個引導類加載器.是本地的和你的環境有關。而且它不是用java寫成的。這個引導類加載器的主要功能是加載java的核心類。
  
 理解類加載器:J2EE 環境下的 log4j(圖一)

  
Figure 1; 類加載器 委托層次

  
  Java虛擬機缺省會執行其他兩個類加載器.引導類加載器會加載extension(擴展)類加載器和application(應用)類加載器到內存中。這些都是用java寫成的。和前面提到的一樣。引導類加載器會加載java的核心類(例如:java.util包下的類)。擴展類加載器會加載擴展的java核心類(例如:javax.包下的類,或者是在運行環境中類路徑ext目錄下的java類。)應用類加載器會加載你應用下的各種class文件。
  所有三種類加載器都遵循委托模式。當低一級的類加載器需要定位一個類。它會將這個任務委托給父一級類加載器.當你的應用需要一個非凡的類。應用類加載器會將這個任務委托給擴展類加載器.而擴展類加載器又會將這個任務委托個引導類加載器.。假如你請求的類是一個核心類。那么引導類加載器會將這個類加載,使你可以使用這個類。但是假如找不到這個類。這個請求就會返回到擴展類加載器.最后在返回到應用類加載器.這樣的做法就使每個類加載器會先讓它的父一級的類加載器搜索需要的類。只有當父一級的類加載器沒有找到。才會讓子一級的類加載器為它自己搜索所需的類。
  在應用服務器當中,每一個獨立部署的web應用和EJB都會取得屬于自己的類加載器(正常情況下,這也是weblogic的處理方式)。這種類加載器來源于應用類加載器.它們主要用來加載特定的ejb和web應用。(注重一點,當我們的web應用打包成ear文件――ejb和webapps的混合,這時候只會有一個類加載器,不會再分成ejb和webapp兩種)這種新的類加載器會加載所有webapp和ejb所需要的類包。當然首先這些類包不存在于java核心類中和擴展類中(ext)。它可以加載也可以卸載類包。但它有一種缺省類加載器所沒有的特性。這個特性就是可以對應用進行熱部署。
  當weblogic啟動的時候。它會用java提供的應用類加載器加載相應的類。并且構造相應的運行環境。然后它會啟動特定的類加載器.這種特定的類加載器來源于java的應用類加載器.java的應用類加載器會為特定的類加載器加載相應的classes.這種特定的類加載器對于其他的應用的類加載器是不可見。因此。一個特定應用所加載的classes.對于其他應用是不可見的。
  
理解類加載器:J2EE 環境下的 log4j(圖二)

  
Figure 2: 特定的應用 類加載器

  
  那么我們如何使一個單獨的類對所有的應用都起作用呢。只有使用上層的類加載器.可以把這個類方在weblogic中classpath里面。當weblogic啟動的時候。缺省的java 應用類加載器會自動把類加載到內存中去。所有的子應用都是可以訪問到這個類的。但是。這中方法的缺點也很明顯。首先你失去了在所有特定應用中對指定類進行熱部署的能力。第二、這些類發生任何變化意味著server必須從新啟動。因為沒有一種機制可以讓java應用類加載器從新加載這些類。所以當你采用這種方法的時候你要權衡一下得失。
  對你的j2ee應用來說,Log4j是一種擴展類庫。那么我們應該把這個類庫放到那里去呢。前面提到一種建議是。將它放到weblogic啟動時的classpath中。但是前面也講到了它的缺點。不太建議使用這種方法。但是在j2ee環境下配置log4j會因為ejb無法得知由webapp類加載器加載的classes而有一些自己的特點(ejb和webapp用的類加載器不相同)。除非你的包和應用使用的相同類加載器加載ejb和webapp.下面我為說明這一點舉個例子。
  我們會在我們安裝的weblogic中部署一個非常簡單的應用它包括jsp和ejb.這個ejb是個非常簡單的ejb。當它被調用的時候會返回”hello world”
  Example: Why Doesn't It Work?
  例子:“它為什么不工作?!?br />  讓我們用weblogic 的控制臺安裝.war文件和。Ejb的.jar(EJB .jar file)文件。當我們想要安裝ejb的.jar文件的時候。我們會發現org.apache.log4j.logger找不到的錯誤。
  Ejb的.jar文件無法從與它相對應的webapp的目錄下的web-inf目錄得到log4j的消息。因為ejb和webapp使用的是不的類加載器.甚至是我們將ejb和webapp打包到同一個ear文件中(.ear file)。我們還是得到錯誤信息。這是為什么?即使我們將ejb和webapp打包到ear文件中使用相同的類加載器。我們還沒有告訴我們的ejb去那里訪問log4j.jar文件。
  Example: Why It Will Work
  例子:為什么它工作了。
  這里有個升級后可以工作的ear文件(updated .ear file)讓我們看看都做了那些改動。
  • 我將log4j.jar文件從webapp的lib目錄下面一移到了外層目錄。與.war和ejb.jar文件平級。這
  樣使得.jar文件對ejb來講是可見的。
  • 我更改的Ejb.jar文件中的Manifest.mf,增加一個條目,使他包含了指向log4j.jar的classpath
 ?。–lass-Path: log4j.jar)
  這些更改已經可以使我們將這個應用部署到weblogic上。當我們用控制臺部署的時候已經沒有出錯信息了。因為現在ejb可以訪問log4j。對于loa

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品福利资源站| 九色精品美女在线| 91在线观看欧美日韩| 国产精品电影网站| 欧美高清在线视频观看不卡| 91福利视频在线观看| 亚洲图片欧洲图片av| 亚洲网址你懂得| 九九热精品视频| 精品视频久久久| 国产亚洲人成网站在线观看| 亚洲黄页网在线观看| 亚洲福利精品在线| 日韩精品极品视频免费观看| 欧美成人合集magnet| 欧美自拍视频在线观看| 国产精品久久国产精品99gif| 日韩中文字幕亚洲| 日韩成人av一区| 乱亲女秽乱长久久久| 91九色视频导航| 精品调教chinesegay| 日韩精品中文字幕在线播放| 亚洲综合中文字幕68页| 欧美日韩免费一区| 国产性猛交xxxx免费看久久| 欧美大片免费观看在线观看网站推荐| 亚洲图片制服诱惑| 欧美猛男性生活免费| 96精品视频在线| 亚洲精品动漫久久久久| 亚洲图片欧美日产| 久久久久久久影视| 欧美激情欧美狂野欧美精品| 欧美亚洲第一页| 在线观看国产成人av片| 中文字幕亚洲一区在线观看| 欧洲亚洲在线视频| 日韩专区中文字幕| 欧美精品久久一区二区| 九色成人免费视频| 久久人人爽人人爽人人片av高清| 欧美视频国产精品| 中文字幕亚洲欧美在线| 日日骚av一区| 久久久女人电视剧免费播放下载| 亚洲女人天堂色在线7777| 日韩精品视频在线播放| 2020久久国产精品| 97免费视频在线| 精品久久国产精品| 91亚洲va在线va天堂va国| 亚洲欧美另类国产| 久久在精品线影院精品国产| 国产97色在线|日韩| 国产日产久久高清欧美一区| 国产精品久久久久久av福利软件| 永久555www成人免费| 亚洲国产欧美一区二区丝袜黑人| 国产精品女主播视频| 国产一区二区久久精品| 国产一区二区美女视频| 欧美视频专区一二在线观看| 97婷婷涩涩精品一区| 伊人亚洲福利一区二区三区| 色综合影院在线| 亚洲aa在线观看| 欧美大尺度激情区在线播放| 国产91精品不卡视频| 成人精品视频久久久久| 最近更新的2019中文字幕| 热门国产精品亚洲第一区在线| 欧美性生交xxxxxdddd| 亚洲精品720p| 久久不射电影网| 亚洲欧美激情四射在线日| 欧美肥老太性生活视频| 一区二区三区四区在线观看视频| 欧美巨猛xxxx猛交黑人97人| 欧美午夜精品久久久久久人妖| 亚洲电影免费观看| 在线成人一区二区| 一区二区三区精品99久久| 日韩欧美亚洲综合| 91精品国产综合久久男男| 国产精品日日摸夜夜添夜夜av| 国产在线播放91| 北条麻妃一区二区三区中文字幕| 国产成人avxxxxx在线看| 国产一区二区黑人欧美xxxx| 国产欧洲精品视频| 中文日韩电影网站| 日韩视频免费在线观看| 久久久999成人| 亚洲新声在线观看| 国产不卡精品视男人的天堂| 黑人巨大精品欧美一区二区免费| 九九九热精品免费视频观看网站| 激情成人在线视频| 成人午夜一级二级三级| 亚洲人永久免费| 57pao精品| 久久夜精品va视频免费观看| 成人h猎奇视频网站| www.日韩视频| 国产精品第1页| 亚洲欧美成人精品| 日韩中文字幕网址| 精品调教chinesegay| 久久精品一偷一偷国产| 久久综合久久八八| 色伦专区97中文字幕| 成人黄色av播放免费| 日本高清不卡的在线| 主播福利视频一区| 91干在线观看| 亲子乱一区二区三区电影| 国产aⅴ夜夜欢一区二区三区| 欧美精品激情blacked18| 色婷婷**av毛片一区| 国产日韩欧美日韩大片| 亚洲va电影大全| yw.139尤物在线精品视频| 国产精品xxx视频| 亚洲电影免费观看高清完整版| 日韩黄色av网站| 夜夜躁日日躁狠狠久久88av| 亚洲欧美另类国产| 日韩禁在线播放| 57pao成人国产永久免费| 国内精品久久久久久中文字幕| 国产在线久久久| 精品综合久久久久久97| 国产精品视频免费在线观看| 亚洲天堂成人在线视频| 日韩av快播网址| 日本成人激情视频| 777777777亚洲妇女| 一区二区三区视频在线| 久久成人免费视频| 久久久久久久久中文字幕| 久久在线视频在线| 成人av电影天堂| 日韩精品黄色网| 韩剧1988在线观看免费完整版| 日本韩国在线不卡| 成人国产精品免费视频| 国产精品第一页在线| 欧美极品第一页| 91夜夜揉人人捏人人添红杏| 久久久精品999| 成人444kkkk在线观看| 国产欧美欧洲在线观看| 久久亚洲成人精品| 国产91色在线|| 亚洲第一av网| 亚洲欧美国产精品专区久久| 国产精品久久久久福利| 中文字幕一区电影| 日韩中文字幕在线免费观看| 欧美韩国理论所午夜片917电影| 国产九九精品视频| 国产一区二区三区直播精品电影| 日韩中文字幕网|