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

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

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

    Java, Only Java!

    統計

    留言簿(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一般會輸出在應用所在盤的根目錄下,開發人員可以根據自己的需要調整Log4J.properties文件就可以改變了。

    posted on 2008-06-13 22:53 zYx.Tom 閱讀(2182) 評論(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應用中如何被調用的。現在介紹Log4J配置的文章多,而Log4J運行機制的文章少。
    許多朋友用的時候都知其然而不知其所以然,一旦應用Log4J的某個環節出現問題(例如:配置文件找不到),就不知道怎么處理了,我也是這樣茫然用Log4J很久后,被迫研究了一下運行機制,寫出來與大家一起分享。
    實際上大部分應用都不是單純在用Log4J,而是Java Commons-Logging(JCL)+Log4J,使用的方式與這篇文章還有不同,我想你說的在其他應用服務器中很好用,可能也就是這種應用方式。下面一篇文章我就會介紹JCL+Log4J在Apusic中的應用,你會發現在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和在其他應用服務器上并沒有區別。

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



      回復  更多評論   

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

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

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

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

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

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

    # 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 的初始化優先取某個系統屬性,而 Websphere 啟動時恰好又設置了這一系統屬性,就會發現 log4j 輸不出日志來,被 Websphere 的日志實現截了下來,輪不到 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 的日志輸出是有些麻煩,要設定系統屬性.
    不過,這個并不代表webshpere 做得不好
    同樣.Apusic 可以不用設定系統屬性,就可以方便的輸出日志,
    也不代表,Apusic 就做得好
    一個產品的好不好,要看應用領域,用戶群體,還有開發者.
    如果三樣都差,肯定不會是什么好產品

      回復  更多評論   

    主站蜘蛛池模板: 国产亚洲精品成人久久网站 | 成人免费毛片视频| 亚洲性天天干天天摸| a视频在线免费观看| 自拍偷自拍亚洲精品第1页| caoporn成人免费公开| 亚洲AⅤ永久无码精品AA| 黄色免费网址在线观看| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | h在线观看视频免费网站| 亚洲日韩乱码久久久久久| 男女免费观看在线爽爽爽视频 | 白白色免费在线视频| 亚洲综合色成在线播放| 国产做国产爱免费视频| 亚洲另类激情综合偷自拍| 亚洲免费人成视频观看| 亚洲色大成WWW亚洲女子| gogo全球高清大胆亚洲| 99久久免费国产精品热| 久久精品国产亚洲AV香蕉| 可以免费看黄的网站| 亚洲av成本人无码网站| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 又大又硬又粗又黄的视频免费看| 亚洲最大AV网站在线观看| 日韩精品内射视频免费观看| 亚洲在成人网在线看| 看全色黄大色大片免费久久| caoporm超免费公开视频| 亚洲av激情无码专区在线播放| 无码人妻一区二区三区免费手机| 色费女人18女人毛片免费视频| 国产亚洲精AA在线观看SEE| 免费影院未满十八勿进网站| 看成年女人免费午夜视频| 亚洲av午夜福利精品一区人妖| 无码人妻一区二区三区免费| 一级特黄录像视频免费| 亚洲成a人片77777群色| 亚洲乱码国产一区网址|