7

私はlog4jに非常に慣れていません。次のようなログ ファイルに例外スタック トレースを表示したくありません。

java.lang.IllegalArgumentException: nodeRef is a mandatory parameter
at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:42)

これらの例外はe.printStackTrace()、そのようなものを使用してコンソールに直接書き込まれます

try {
    // something
} catch(Exception e) {
    StringWriter stack = new StringWriter();
    e.printStackTrace(new PrintWriter(stack));
    logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
}

私は現在、すべてのプログラムを自分で作成するのではなく、オープン ソース プロジェクトをカスタマイズしています。e.printStackTrace();そのため、すべての Java ファイルを削除することはできません。

私が知る限り、ロガーで出力されるログはlog4j、info、debug、warn などの log4j エラーレベルを使用して構成できます。しかし、コンソールまたはファイルに直接書き込むのはどうですか?

例外スタックトレースのみを出力するのではなく、他の情報を表示するように log4j を構成するにはどうすればよいですか? それを解決する方法はありますか?

4

3 に答える 3

8

コード

StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());

は、Log4j API の間違った使い方の単なる例です。debugしかし、それで行き詰まっている場合は、ログ レベルを上に上げてメッセージ全体を除外する以外に何もすることはありません。

すべてのログ メッセージを切り捨てる方法がある可能性があります。これにより、問題が多少軽減されます。

于 2012-08-30T11:57:41.433 に答える
8

ロガーを使用#エラー

import org.apache.log4j.Logger;

...

Logger log = Logger.getLogger(Locomotive.class);
log.error("your message", exc);

...
于 2012-08-30T11:52:38.707 に答える
0
logger.info("Inside add() of Abc class");
logger.error("Error occurred while calculation::::"+errorMessage);
于 2012-08-30T12:01:47.670 に答える