0


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"));} //メインプロセスはここに行きます。 } catch(Exception e){//例外処理}}}

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

それはクラスパスの問題と関係がありますか? 誰もがこれを処理する方法を知っていますか?

2 Answer


1


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

それでもうまくいかない場合は、onejarの結果をディレクトリ構造に解凍してから、jarではなくクラスパス上のディレクトリを使用して実行できますか? それはあなたがそれがjarファイルと関係があるかどうかを確かめ、そして実際にonejarの中にあるlogging.propertiesを調べ、そしてそれがあなたの期待するものと一致するかどうかを確かめるでしょう。


0


`+ LogManager.getLogManager()。readConfiguration(LogManager.class.getResourceAsStream(" / logging.debug.properties ")); +`を使用します

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