0

私のアプリケーションはJbossAS7.1.1.finalで実行されます。ログをDBに書き込む必要があったので、カスタムハンドラーを作成しましたpublic class DataSourceHandler extends java.util.logging.Handler

すべて正常に動作しますが、このログが呼び出されたクラスの行番号と名前、およびエラーが発生した場合はスタックトレースを取得する必要があります。

Jboss 7にアップグレードする前に、log4jを使用し、以下を使用して取得することができました。

org.apache.log4j.spi.LocationInfo locationInfo = new org.apache.log4j.spi.LocationInfo(event.getThrown(), event.getSourceClassName());
org.apache.log4j.spi.ThrowableInformation throwableInfo = new org.apache.log4j.spi.ThrowableInformation(event.getThrown());

if (locationInfo != null) {
    fileName = locationInfo.getFileName();
    lineNumber = locationInfo.getLineNumber();
}
if (throwableInfo != null) {
    String[] exceptionArray = throwableInfo.getThrowableStrRep();
    for (String line : exceptionArray) {
        exceptionBuffer.append(line).append(NEW_LINE);
}
info = extractInfo(exceptionBuffer);
}

どうすれば今それを行うことができますか?

4

1 に答える 1

1

その情報はJULによって提供されません。jboss-logmangerに依存してもかまわない場合は、JULorg.jboss.logmanager.ExtHandlerハンドラーの代わりに拡張できます。それはあなたにorg.jboss.logmanager.ExtLogRecordその情報を提供するであろうを提供するでしょう。

doPublish(ExtLogRecord)JUL公開メソッドの代わりにオーバーライドするだけです。

JBossAS7はJBossLoggingとJBossLogManagerを使用するため、依存関係はすでに提供されています。

于 2012-07-10T16:13:37.767 に答える