<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java, Only Java!

    統(tǒng)計

    留言簿(20)

    積分與排名

    好友空間

    文檔技巧

    閱讀排行榜

    評論排行榜

    Apusic AS的Web應用中調用Log4J的流程

    經常碰到項目中用Log4J,但是自己一直都沒有認真去研究過Log4J的運行流程,看了許多資料講得都是Log4J.properties怎么配置,但是Log4J啟動→調用→輸出的流程仍然不清楚,本文就準備對Log4J的詳細啟動過程進行介紹,使得大家可以更好的在Apusic中使用Log4J。

    ?

    1. 編寫一個Servlet程序,目標是初始化Log4J的相關配置,具體內容參考附件中的Log4jInit.java程序,附件下載地址:http://zhuyuanxiang.javaeye.com/topics/download/66d599d6-b21c-3933-a707-be2b08505519
    public class Log4jInit extends HttpServlet {

    ?public void init() {
    ??ServletContext context = getServletConfig().getServletContext();
    ??Hierarchy hierarchy = new Hierarchy(new RootCategory(Level.DEBUG));

    ??// 將hierarchy初始化后保存到context中,在Web應用的全局供其他Web代碼使用。
    ??context.setAttribute("hierarchy", hierarchy);

    ??String prefix = getServletContext().getRealPath("/");
    ??String file = getInitParameter("log4j-init-file");
    ??// if the log4j-init-file is not set, then no point in trying
    ??if (file != null) {???// 增加hierarchy配置的內容
    ???new PropertyConfigurator().doConfigure(prefix + file, hierarchy);
    ???Logger logger = hierarchy.getLogger(Log4jInit.class.getName());
    ???logger.info("Logging initialized for Hello.");
    ??}
    ?}

    關鍵就是對Hierachy的初始化,并且保存到context中,供其他Web應用中的Java代碼使用

    2. 配置web.xml文件,對Log4jInit在Web應用加載過程中初始化

    ?<servlet>
    ??<servlet-name>log4j-init</servlet-name>
    ??<servlet-class>wombat.Log4jInit</servlet-class>

    ??<init-param>
    ???<param-name>log4j-init-file</param-name>
    ???<param-value>WEB-INF/classes/log4j.properties</param-value>
    ??</init-param>
    ??<load-on-startup>1</load-on-startup>
    ?</servlet>

    3. 編寫HelloServlet.java,在代碼中使用Logger

    ?public void init() throws ServletException {
    ??ServletContext context = getServletConfig().getServletContext();
    ??// 從context中取出hierarchy供本Servlet的Logger使用
    ??Hierarchy hierarchy = (Hierarchy) context.getAttribute("hierarchy");

    ??if (hierarchy == null) {
    ???context.log("The Hello web-application is not properly intialized.");
    ??} else {
    ???logger = hierarchy.getLogger(HelloServlet.class.getName());

    ?? logger.info("HelloServlet initiation is OK!");
    ??}
    ?}

    ?

    因此,如果使用Log4J需要在代碼中初始化Log4J的相關配置并保存到上下文中,同時配置信息寫在web.xml中,并且正確提供log4j.properties文件,然后在代碼中調用了Logger就可以輸出日志信息了。

    本例子的/hello.log一般會輸出在應用所在盤的根目錄下,開發(fā)人員可以根據(jù)自己的需要調整Log4J.properties文件就可以改變了。

    posted on 2008-06-13 22:53 zYx.Tom 閱讀(2181) 評論(10)  編輯  收藏 所屬分類: 1.Java世界

    評論

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-06-14 00:18 Robin's Java World

    Apusic使用Log4J還這難?
    如果這難,表明Apusic做得可不好喲。
    看看Webshpere和WebLogic,使用Log4J就跟在Tomcat中一樣,沒有任何分別。  回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-06-14 10:14 朱遠翔-Apusic技術顧問

    @Robin's Java World
    可能我寫的東西帶來些誤解,我說的不是什么應用服務器有問題,而是介紹Log4J在應用服務器的Web應用中如何被調用的。現(xiàn)在介紹Log4J配置的文章多,而Log4J運行機制的文章少。
    許多朋友用的時候都知其然而不知其所以然,一旦應用Log4J的某個環(huán)節(jié)出現(xiàn)問題(例如:配置文件找不到),就不知道怎么處理了,我也是這樣茫然用Log4J很久后,被迫研究了一下運行機制,寫出來與大家一起分享。
    實際上大部分應用都不是單純在用Log4J,而是Java Commons-Logging(JCL)+Log4J,使用的方式與這篇文章還有不同,我想你說的在其他應用服務器中很好用,可能也就是這種應用方式。下面一篇文章我就會介紹JCL+Log4J在Apusic中的應用,你會發(fā)現(xiàn)在Apusic中Log4J同樣很好用。
    Apusic的日志機制采用了與Log4J不同的框架,是SUN JDK 1.4 Logging,并不是Apusic應用服務器本身有什么不足,不同框架的融合正是J2EE世界的特點,那么融合這兩種框架對許多朋友來說確實存在一定的難度,這兩篇文章的目的也就是想幫助大家。  回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-06-14 10:25 鬼狗

    我Orz了,作為國內apusic的最早用戶,作為apusic的義務免費測試人員,作為apusic的直接受害者,我今天又Orz了。

    ls的,貌似樓主的意思并非是說apusic不能正常使用log4j,而是要自己玩玩。我們使用log4j和在其他應用服務器上并沒有區(qū)別。

    樓主,你騙點擊也不用這樣么,這跟apusic有鬼關系,你這樣寫只會讓大家以為apusic很濫,雖然她確實很濫,但是作為顧問你要有職業(yè)道德么。



      回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-06-14 10:45 朱遠翔-Apusic技術顧問

    @鬼狗
    我不用騙點擊率,我開博就說了這個是我記錄自己工作內容的地方。
    其次,每個應用服務器肯定會有不同的,我只測試了Apusic的使用情況,嚴謹?shù)恼f只能是Apusic上的Log4J如何用。
    任何產品都有不完美的地方,Oracle的數(shù)據(jù)庫就是最新的版本,我還遇到過CPU資源被嚴重消耗,最后通過打補丁來解決的問題,但是沒人會說Oracle數(shù)據(jù)庫不好。Apusic作為國內知名的應用服務器產品,也得到了大量客戶的認可。
    不過對于Apusic產品給您工作帶來的麻煩,我們愿意配合您給予解決。  回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-06-14 14:17 鬼狗

    如果apusic的技術人員有能力解決,誰還有意見,問題就是。。。。。
      回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-06-14 14:18 鬼狗

    ps一下,你們客服人員到現(xiàn)場連個服務單都不填的,管理那個濫。  回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-06-14 15:01 朱遠翔-Apusic技術顧問

    @鬼狗
    看樣子,真的把你郁悶到了,很抱歉。
    如果你那里有什么我可以幫上忙的,也可以給我留言。
    仍然感謝你對Apusic產品的支持。  回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-07-23 18:31 隔葉黃鶯

    其實在Webshpere下通過 commons-logging 來使用 log4j 也不容易,因為 commons-logger 的初始化優(yōu)先取某個系統(tǒng)屬性,而 Websphere 啟動時恰好又設置了這一系統(tǒng)屬性,就會發(fā)現(xiàn) log4j 輸不出日志來,被 Websphere 的日志實現(xiàn)截了下來,輪不到 log4j 的份。

    不知道這能不能算是 Websphere 做得很差勁。  回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2008-07-24 09:22 朱遠翔-Apusic技術顧問

    @隔葉黃鶯
    通過調整默認的Commons-Logging估計可以解決。
    這個問題技術上難度不大,還是考慮周到與否的問題。  回復  更多評論   

    # re: Apusic AS的Web應用中調用Log4J的流程 2009-11-17 23:33 XX001

    webshpere 的日志輸出是有些麻煩,要設定系統(tǒng)屬性.
    不過,這個并不代表webshpere 做得不好
    同樣.Apusic 可以不用設定系統(tǒng)屬性,就可以方便的輸出日志,
    也不代表,Apusic 就做得好
    一個產品的好不好,要看應用領域,用戶群體,還有開發(fā)者.
    如果三樣都差,肯定不會是什么好產品

      回復  更多評論   

    主站蜘蛛池模板: 1000部拍拍拍18免费网站| 国内永久免费crm系统z在线| 中文字幕无码播放免费| 在线精品亚洲一区二区小说| 国产曰批免费视频播放免费s| 亚洲成在人线av| a在线观看免费视频| 久久亚洲国产成人影院网站| v片免费在线观看| 亚洲色欲久久久综合网| 少妇太爽了在线观看免费视频| 亚洲va中文字幕无码久久| AAA日本高清在线播放免费观看| 亚洲精品免费观看| 亚洲美女免费视频| 亚洲午夜精品一区二区麻豆 | 色www永久免费网站| 久久亚洲综合色一区二区三区| 成人影片一区免费观看| 亚洲美女人黄网成人女| 色窝窝免费一区二区三区 | 无码久久精品国产亚洲Av影片| 久久永久免费人妻精品| 亚洲免费电影网站| 国产精品久久久久影院免费| 一区二区三区在线免费观看视频| 国产亚洲福利精品一区| 91精品免费在线观看| 亚洲高清乱码午夜电影网| 亚洲精品国产精品国自产观看| 久久成人免费播放网站| 亚洲人成网站色在线观看| 国产精品成人无码免费| 国内少妇偷人精品视频免费| 亚洲精品国产福利在线观看| 日韩一区二区三区免费体验| a级毛片高清免费视频就| 国产成人精品日本亚洲专| 久久久久一级精品亚洲国产成人综合AV区 | 亚洲国产精品一区第二页| 国产精品视频永久免费播放|