2

プロパティ ファイルを使用して一部の Java ロギングをフォーマットしようとしていますが、機能していません。プロパティファイルに次の行があります。

java.util.logging.ConsoleHandler.formatter=mypackage.logging.LogFormatter
java.util.logging.FileHandler.formatter=mypackage.logging.LogFormatter

カスタム フォーマッタ LogFormatter が mypackage.logging にある場所

ログ出力は、カスタム フォーマッタではなく、SimpleFormatter が使用されていることを示しています。

ログ プロパティ ファイルを使用してカスタム フォーマッタを使用するにはどうすればよいですか?

編集: com.bea.logging.LogMessageFormatter、SimpleFormatter、XmlFormatter などの既成のフォーマッタをすべて試しました。彼らはうまく動作します。私が作成した新しいフォーマッターが機能しないだけです(フォーマッターの拡張)。これはクラスパスの問題でしょうか?

4

1 に答える 1

0

LogManager はエラーを System.err に報告しますが、これはおそらくログ ファイルにリダイレクトされます。そのログファイルを見つけることはあなたを助けるはずです。

システム クラス ローダーから見えないクラスを扱っている場合、JDK -6448699 LogManager がログ ハンドラを正しくロードしない、およびJDK-6878454 LogManager クラスのロードが Java EE のベスト プラクティスと矛盾する に遭遇します

Formatter がシステム クラス パスから見えることを証明するには、次のコードを試してください。

Class.forName("mypackage.logging.LogFormatter", true, ClassLoader.getSystemClassLoader());

sun.misc.URLClassPath.debugシステム プロパティを に設定するtrueか、起動時に を使用して-verbose:class、クラスローディングに関する詳細なデバッグ情報を取得できます。

于 2013-11-27T16:40:59.267 に答える