0

展開プロセスを簡素化するためにone-jarパッケージャーを使用して配信しようとしているプロジェクトに問題があります。
パッケージングがなければ、すべてが正常に機能し、ロギング構成が完全にロードされますが、パッケージ内では、構成の一部のみが適用されます。

だから、ここに私が使用するlogging.propertiesがあります:

handlers= java.util.logging.ConsoleHandler, java.util.logging.FileHandler
.level= INFO
java.util.logging.FileHandler.pattern = C:\\MyPath\\logging.csv
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = my.package.logging.Formatter
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = my.package.logging.Formatter

そして、私のメインクラスでは、これをロードする方法は次のとおりです。

public class MainClass {
  public static void main(final String[] args) {
    try {
      LogManager.getLogManager().readConfiguration(
        new MainClass().getClass().getResourceAsStream("logging.properties"));
      // main process goes here.
    } catch(Exception e) {
      // Exception handling
    }
  }
}

ログは正しいファイルに出力されるため、ログ レベルと FileHandler パターンはよく理解されていますが、行の XML 出力として、通常は CSV 形式を出力するため、フォーマッタが読み込まれていないと思われます。

クラスパスの問題に関連している可能性がありますか? 誰もこれを処理する方法を知っていますか?

4

2 に答える 2

1

jarファイルに、設定が似ているがわずかに異なる複数のlogging.propertiesファイルがある可能性があります。それらを1つの瓶と組み合わせると、順序が変わり、そのうちの1つが非表示になります。「jar-tf*.jar | grep logging.properties」を実行して、表示される内容を確認します。

それでも問題が解決しない場合は、onejarの結果をディレクトリ構造に解凍してから、jarではなくクラスパス上のディレクトリで実行してみてください。これにより、それがjarと関係があるかどうかを確認し、実際にonejarにあるlogging.propertiesを調べて、期待どおりかどうかを確認できます。

于 2009-02-13T16:22:06.083 に答える
0

使用する LogManager.getLogManager().readConfiguration(LogManager.class.getResourceAsStream("/logging.debug.properties"));

(余分なスラッシュに注意してください)。

于 2010-07-13T01:12:23.963 に答える