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

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

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

    CONAN ZONE

    你越掙扎我就越興奮

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks
    Tomcat 啟動時的系統日志默認是由 JdkLog14Logger 打印出來的,如

    2008-7-7 11:19:34 org.apache.catalina.core.StandardEngine start
    信息: Starting Servlet Engine: Apache Tomcat/5.0.28
    2008-7-7 11:19:34 org.apache.catalina.core.StandardHost start
    信息: XML validation disabled
    2008-7-7 11:19:34 org.apache.catalina.core.StandardHost getDeployer
    信息: Create Host deployer for direct deployment ( non-jmx )


    那我們能不能用 Log4J 來輸出這種系統日志呢?我們知道像 Apache 那樣的大部分開源框架、組件都是用通用日志組件 (commons-logging) 來輸出日志的,因此如果把 commons-logging 和 log4j 搭配使用就能輸出十分詳盡的日志信息。

    尤其是碰到 Tomcat 幾乎能令人抓狂的 Error filterStart ,如控制臺下得到如下信息:

    2007-3-13 17:43:46 org.apache.catalina.core.StandardContext start
    嚴重: Error filterStart
    2007-3-13 17:43:46 org.apache.catalina.core.StandardContext start
    嚴重: Context startup failed due to previous errors


    而茫然不知所措時,免不了會胡亂猜測,更容易使你的注意力集中在所有的 filter 本身上,其實有些冤枉 filter 了。至少網上針對這個問題有許多不明確的解,有配置文件問題的,有缺類少包的問題等,不一定能和你的實際問題對上號。

    其實大可不必受如此之周折,解鈴仍需寄鈴人嗎,由 Tomcat 給你落下的結,當然要 Tomcat 告訴你是怎么回事。很多人在自己的應用中會安放一個日志文件,卻可能忽略掉 Tomcat 自身的日志文件,在 logs 目錄下的 localhost_log.yyyy-MM-dd.txt 就事,記住只要碰到關于 Tomcat 本身啟動的問題,查看其中當前的日志信息的話,問題就會坦蕩蕩蕩顯露在你的前面,基本也就能迎刃而解了。

    前面講過,commons-logging+log4j 可以輸出極詳盡的信息,那現在就來說說如何配置。很多人開發過程中是通過 MyEclipse 來啟動 Tomcat 的,所有這里包括兩種方法,分別介紹如下:

    1. MyEclipse 啟動 Tomcat 使用 Log4j 輸出日志信息的配置

    在 MyEclipse 的 Tomcat 服務器配置中的 Prepend to classpath 或者 Append to classpath 中加入

    commons-logging-1.1.jar
    log4j-1.2.13.jar
    以及 log4j.properties 所在目錄,如 D:\Tomcat\Tomcat 5.0.28-Test\bin

    如圖:

    我是把 commons-logging-1.1.jar、log4j-1.2.13.jar 和 log4j.properties 都放在 %TOMCAT_HOME%\bin 目錄下的,當然你也可以放在別處。

     

    完了之后,通過 MyEclipse 啟動 Tomcat 時就能看到讓你眼花花的日志滾屏,請根據實際需要在log4j.properties 中屏蔽你不想關注的內容。所以像這種日志信息最好是記錄在文件中,屏幕的緩沖區是有限且耗內存的。真正需要的時候你就可以從這個日志文件里讀懂 Tomcat 的啟動全過程。

    如果你明白 commons-logging.properties 的功用,你也可以把這個文件放在與 log4j.properties 所在的目錄下,可在其中指定其他 log 實現類,詳見 commons-logging.properties 文件的內容。

    2. startup.bat 啟動 Tomcat 使用 Log4j 輸出日志信息的配置

    按前面推薦的做法,把 commons-logging-1.1.jar、log4j-1.2.13.jar 和 log4j.properties 都放在 %TOMCAT_HOME%\bin 目錄下,然后修改 catalina.bat 文件,找到

    set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar

    行,在其后附上這兩個包和 log4j.properties 所在目錄到 classpath 上,修改后就是:

    set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_HOME%\bin\commons-logging-1.1.jar;%CATALINA_HOME%\bin\log4j-1.2.13.jar;%CATALINA_HOME%\bin

    保存,通過 startup.bat 啟動就會用 log4j 來輸出啟動日志了,其他平臺下的 Tomcat,請參照平臺特性修改 catalina.sh 吧。

    同樣,你也可以應用 commons-logging.properties 指定其他的 log 實現,因為 Log4j 是它的默認實現,所以可省去。

    用 Log4j 輸出的啟動日志形式如下:

    15:36:37,859 org.apache.catalina.startup.Embedded.initNaming(Embedded.java:922) - Setting naming prefix=org.apache.naming
    15:36:38,046 org.apache.catalina.startup.Catalina.createStartDigester(Catalina.java:350) - Digester for server.xml created 171
    15:36:38,218 org.apache.catalina.core.NamingContextListener.<init>(NamingContextListener.java:83) - new NamingContextListener

    許多你希望深入了解的內部細節都可以通過這樣一份日志追蹤到。

    附上這兩個屬性文件的:log4j.properties 和 commons-logging.properties。

    log4j.properties
    1. log4j.rootLogger=DEBUG,stdout,file  
    2.  
    3. ## direct log messages to stdout ###   
    4. log4j.appender.stdout=org.apache.log4j.ConsoleAppender   
    5. log4j.appender.stdout.Target=System.out  
    6. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   
    7. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %l - %m%n  
    8.  
    9. ## direct messages to file SystemOut.log ###   
    10. log4j.appender.file=org.apache.log4j.FileAppender   
    11. log4j.appender.file.File=../logs/SystemOut.log   
    12. log4j.appender.file.Append=false  
    13. log4j.appender.file.layout=org.apache.log4j.PatternLayout   
    14. log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %l - %m%n  
    15.  
    16. ## block packages that you  don't care about ###   
    17. log4j.logger.org.apache.commons.digester=ERROR   
    18. log4j.logger.org.apache.commons.beanutils=ERROR   
    19. log4j.logger.org.apache.commons.modeler=ERROR  

    commons-logging.properties
    1. org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger  
    2.  
    3. #Please refer to the Log implementations in package org.apache.commons.logging.impl#  
    4. #org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger  
    5. #org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog  


    posted on 2008-07-08 23:00 CONAN 閱讀(3372) 評論(0)  編輯  收藏 所屬分類: Application Server
    主站蜘蛛池模板: 免费成人午夜视频| 精品国产免费一区二区| 亚洲中文字幕不卡无码| 免费高清A级毛片在线播放| 国产特级淫片免费看| 美女裸体无遮挡免费视频网站| 日韩视频免费在线| 美女黄频免费网站| 国产亚洲成人久久| 久久这里只精品99re免费| 久久青草亚洲AV无码麻豆| 99re6热视频精品免费观看| 亚洲激情黄色小说| 四虎成人免费影院网址| 免费大片av手机看片高清| 亚洲一区爱区精品无码| 三年片在线观看免费大全电影 | 亚洲激情中文字幕| 久久受www免费人成_看片中文| 亚洲人成网站在线在线观看 | 亚洲午夜精品久久久久久浪潮| 一区视频免费观看| 亚洲AV日韩精品久久久久| 日韩免费精品视频| 特级aa**毛片免费观看| 亚洲爆乳精品无码一区二区三区| 中文字幕免费高清视频| MM1313亚洲国产精品| 亚洲尤码不卡AV麻豆| 免费A级毛片无码无遮挡内射| 亚洲国产美女精品久久久| 中文字幕亚洲一区二区三区| 6080午夜一级毛片免费看6080夜福利| 国产色在线|亚洲| 亚洲无码高清在线观看| 免费福利视频导航| 国产黄在线观看免费观看不卡| 亚洲毛片免费观看| 精品国产亚洲男女在线线电影 | 亚洲AV中文无码乱人伦| 无码国产精品一区二区免费式芒果|