1. 程式人生 > >2017第43周日

2017第43周日

ash date tomcat的配置 localhost das 都是 jvm lock 影響

一、JVM調試排查問題會用到的參數:

-XX:+TraceClassLoading:打印加載類文件路徑,調試jar沖突有用
-XX:+PrintGCDetails:打印GC消息詳細
-XX:+PrintGCTimeStamps:打印GC信息帶時間。

二、Java中異常體系

技術分享

一般編譯時必須要開放處理的屬於Exception,屬於Error類業可以try.catch捕獲,比如因jar包版本沖突引起的類方法不存在異常屬於Error,要捕獲Throwable異常才行。

三、Tomcat中日誌輸出

1、Tomcat自帶日誌功能,即時你的項目中有log4j也不會影響到Tomcat自己記錄日誌。

2、你的項目中的log4j中的日誌指定打印到什麽地方(控制臺或者文件),便會打印到什麽地方,和Tomat日誌無關。

——如果你項目中的log4j指定打印到控制臺,並且你開啟的tomcat有控制臺,那麽這個時候你可以在控制臺觀察到日誌。

——如果你用log4j來處理了Tomcat的日誌(具體需要你自己配置tomcat的配置文件),那麽Tomcat便會使用log4j來打印,但是這和你項目中的log4j仍然不是同一個log4j。

3、關於異常日誌的打印

如果你在你的項目中處理了某個異常:

        try {
            int i = 1/0;
        }catch(Exception e) {
            e.printStackTrace();
        }

  A、那麽這個異常信息會打印到你的控制臺。你說你沒有開控制臺,是用服務的形式跑的?那麽這個異常的信息你就看不見了。

  B、你在你的項目中直接throw的,並且沒有任何地方處理這個異常,那麽最後這個異常會被拋給你的容器——Tomcat,Tomcat這時會在localhost.日期.log文件中記錄這個異常。

讓tomcat控制臺日誌輸出文件的方法

把tomcat/bin目錄下的startup.bat文件中的
call "%EXECUTABLE%" start "CMD_LINE_ARGS"
修改為
call "%EXECUTABLE%" run "CMD_LINE_ARGS"

再把catalina.bat文件中最後最長的幾行修改一下(都是以%ACTION%結尾的),在後邊加上:
>> %CATALINA_BASE%\logs\xxx_%DATE:~0,10%.log
(註:%CATALINA_BASE%是tomcat的根目錄,%DATE:~0,10%是系統時間截取,有的系統可能不是這樣截取的,你可以用echo %DATE%命令看一下結果,0是起始位置,10時長度,根據結果來截取一下)
添加這行的目的是讓tomcat把控制臺的信息都輸出到
%CATALINA_BASE%\logs\xxx_%DATE:~0,10%.log

2017第43周日