2012-01-19 22 views
1

私は非常に奇妙な問題を抱えています。スタックトレースを記録すると、エラーが発生した行ではなく、ロガーと呼ばれる行で発生しているように見えます。これは、エラーを追跡するという点で重大な時間を浪費します。TomcatとロギングStacktrace情報

tomcat6、openjdk 6、およびlog4jを使用します。

どのような考えですか?あなたが与えることができるすべての助けをありがとうございます。

ここは例です。コード、ライン137-142:

try { 
    req.getContentType().trim(); 
} catch (Exception e) { 
    log.error("DEBUG: " + e.getLocalizedMessage(), e.fillInStackTrace()); 
     e.printStackTrace(); 
} 

ログ:

2012-01-19 10:13:25,393 [http-8080-1] ERROR com.myservlet.servlet.Servlet2 - DEBUG: null 
java.lang.NullPointerException 
    at com.myservlet.servlet.Servlet2.doPost(Servlet2.java:140) 
    at com.myservlet.servlet.Servlet2.doGet(Servlet2.java:292) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) ... 

答えて

4

は、スタックトレースのもので塗りつぶしをしないでください、あなたの例外がフルに上げる必要があります。

は、単にそれを解決し

log.error("My message", e); 
+0

を行います。私たちは非コンテナベースのJavaコードを作成します。これは、そのロギングパターンを借用しておく必要があります。何らかの理由で、そのパターンはコンテナベースではないコードでは動作しますが、Tomcatでは動作しません。 将来すべてのケースを調整する必要があります。どうもありがとうございました。 – decoy

+0

そのパターンは、コンテナや環境に関係なく、他のビットのコードでスローされた例外を記録するのには適していません。これは、コード内の正確なポイントのスタックトレースをログに記録する目的のみで人工的に例外を作成する場合にのみ適切です。 – AndyT

+0

ありがとうございます。それは今より多くの意味があります。私の前でこのコードを持っていた人は誰か非常に奇妙なことをしていました。私は技術と言語の間をかなり飛び越えなければならないので、紛失するのは簡単です。これがその時代の一つだと思います。 :) – decoy

関連する問題