33

ログファイルを見つけるのに問題があります。

java.util.loggingWindows XP の Eclipse 3.7.1 でJava Logging を使用しています。私のファイルの関連行は次のlogging.propertiesとおりです。

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level=INFO
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

私が理解できる限り、これらの2行を実行した後:

Logger logger = Logger.getLogger("test"); 
logger.logp(Level.INFO, "myClass", "myMethod", "Alcatraz"); 

C:\Documents and Settings\[My Windows ID]\javaX.log私のログファイルはどこにあるはずですかXは整数です。

そのディレクトリにからまでの5 つの異なるjava.logファイルがありますが、ログ レコードや今日の日付を含むレコードさえも含まれていません。グーグルで調べたところ、ログが別の場所にあることを意味するトレースとログが見つかりました. という名前のファイルが 1 つありますが、基本的には空です。java0.logjava4.logc:\Documents and Settings\[My Windows ID]\Application Data\Sun\Java\Deployment\logplugin5581819941091650582.log

<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
</log>

その作成日は先週です。(どのプロセスで作成されたのかはわかりません。明示的に作成したわけではありません。)

それでは、私のログファイルはどこにありますか? 他に見るところが思い浮かびません。

logging.propertiesまた、変更がいつ有効になるか知っている人はいますか? ログ レベルまたは を変更した場合FileHandler.pattern、プログラムが変更を認識する前に何が必要でしょうか? 単に変更を保存するだけでlogging.propertiesは明らかに十分ではありません。Eclipse を再起動する必要がありますか? またはコンピュータを再起動しますか?ちょっと興味があるんだけど。これは、ログ ファイルが実際にどこにあるかを見つけることほど大したことではありません。

4

7 に答える 7

19

ファイルはどこにありますlogging.propertiesか? クラスパスのルートで利用できるはずです。健全性チェックとして、次のコードは何を出力しますか?

System.out.println(getClass().getClassLoader().getResource("logging.properties"));

コードがstaticコンテキスト内にある場合は、使用します

System.out.println(ClassName.class.getClassLoader().getResource("logging.properties"));
于 2012-02-27T03:30:26.840 に答える
1

デフォルトの場所が変更されたようです。ログファイルを見つけるには、アプリケーションで Java コンソールを開きます。そこで「s」を押します。これにより、次のようなシステムプロパティと展開プロパティが出力されます。

deployment.user.logdir = C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\log

そこにログファイルがあります。

于 2016-08-03T12:25:48.327 に答える
0
  1. 変数 or logger.getHandlers(): をデバッグして、FileHandler のインスタンスだけを探し、そのプライベート フィールド: files を探します。
  2. ログを含むロガーレベルを確認してください。
  3. ログを含むハンドラーレベルを確認してください。
  4. ホームディレクトリに送信されます。Windows 95/98/ME などのオペレーティング システムにそのディレクトリがない場合、ファイルは のようなデフォルト パスに保存する必要がありますC:\Windows\
  5. 反映、ヒント 1 と同じ

    Field[] handlerFiles = handler.getClass().getDeclaredFields();
    AccessibleObject.setAccessible(handlerFiles, true);
    
    for (Field field : handlerFiles) {
        if (field.getName().equals("files")) {
            File[] files = (File[]) field.get(handler);
            System.out.println(Arrays.toString(files));
        }
    }
    
  6. ログ マネージャーは、JVM の起動時に初期化され、main メソッドの前に完了します。System.setProperty("java.util.logging.config.file", file)を呼び出すmain メソッドで を再初期化することもできますLogManager.readConfiguration()

于 2019-01-28T15:36:39.777 に答える