3

各ディレクトリが作成されたディレクトリにログを作成しようとしていますが、fileHandler はディレクトリを作成していませんこのディレクトリにログを作成します)。「fileHandler」でディレクトリを作成できますか?

FileHandler fileTxt;
fileTxt = new FileHandler("C:\\ff\\Logging.txt");

log4J は、存在しない場合でもディレクトリを作成できますが、これは fileHandler を介して可能ではありませんか?

4

1 に答える 1

6

julFileHandler はディレクトリを作成できません。API 仕様によると、存在しないディレクトリは無効として扱われるべきです。つまり、代わりにユーザーのホーム ディレクトリにログが表示されるはずです。これはJDK-6244047 で説明されています

構成: デフォルトでは、各 FileHandler は次の LogManager 構成プロパティを使用して初期化されます。プロパティが定義されていない (または無効な値がある) 場合は、指定されたデフォルト値が使用されます。

  • java.util.logging.FileHandler.level は、ハンドラのデフォルト レベルを指定します (デフォルトは Level.ALL)。

<snip>

  • java.util.logging.FileHandler.pattern は、出力ファイル名を生成するためのパターンを指定します。詳細については、以下を参照してください。(デフォルトは「%h/java%u.log」)。

上記の仕様の文言に基づいて、「FileHandler.pattern」プロパティが使用できない値を指定している場合、それは無効です。無効な値が指定された場合、API はデフォルト値を使用することになっています。この場合、「%h/java%u.log」を使用する必要があります。

ディレクトリを作成する必要がある場合は、LogManager 構成オプションを使用する、FileHandler をサブクラス化できます。

参照: JDK-6258319: FileHandler ファイルの例外には %h はありませんが、%h は存在しません

于 2014-04-01T20:52:13.727 に答える