web-dev-qa-db-ja.com

Javaロギング-ログファイルはどこにありますか?

ログファイルを見つけることができません。

Windows XP上のEclipse 3.7.1でJava Logging-Java.util.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は整数です。

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

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

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

では、ログファイルはどこにありますか?私は他に見る場所が思いつかない。

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

23

あなたのlogging.propertiesファイルが見つかりましたか?クラスパスのルートで利用可能である必要があります。健全性チェックとして、次のコードは何を印刷しますか?

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

コードがstaticコンテキストにある場合、使用

System.out.println(ClassName.class.getClassLoader().getResource("logging.properties"));
16
sjr

.logファイルは\ workspace.metadataフォルダーにあります。 Eclipse 4.2を使用しています。他の初心者を助けようとする初心者。

2

質問者が抱えている問題の根本的な原因は、logging.propertiesファイルが読み取られていないことです。
Java.util.logging.config.fileで指定されたファイルは、クラスパスから読み取られません。代わりに、現在のディレクトリに関連するファイルシステムから読み取られます。
たとえば、次のコマンドJava -Djava.util.logging.config.file=smclient-logging.properties SMMainを実行すると、現在のディレクトリからsmclient-logging.propertiesが読み取られます。正しいJava.util.logging.config.fileが読み取られると、ファイルで指定されたとおりにログが生成されます。

2
Amit Singh

ログファイルの場所は、logging.propertiesファイルを使用して制御できます。そして、JVMパラメータexとして渡すことができます:Java -Djava.util.logging.config.file=/scratch/user/config/logging.properties

詳細: https://docs.Oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm

ファイルハンドラーの構成

ログをファイルに送信するには、logHandler.propertiesファイルのhandlersプロパティにFileHandlerを追加します。これにより、ファイルロギングがグローバルに有効になります。

handlers= Java.util.logging.FileHandler

次のプロパティを設定してハンドラーを構成します。

Java.util.logging.FileHandler.pattern=<home directory>/logs/oaam.log
Java.util.logging.FileHandler.limit=50000
Java.util.logging.FileHandler.count=1
Java.util.logging.FileHandler.formatter=Java.util.logging.SimpleFormatter

Java.util.logging.FileHandler.patternは、出力ファイルの場所とパターンを指定します。デフォルト設定はホームディレクトリです。

Java.util.logging.FileHandler.limitは、ロガーが1つのファイルに書き込む最大量をバイト単位で指定します。

Java.util.logging.FileHandler.countは、循環する出力ファイルの数を指定します。

Java.util.logging.FileHandler.formatterは、ファイルハンドラクラスがログメッセージのフォーマットに使用するJava.util.loggingフォーマッタクラスを指定します。 SimpleFormatterは、ログレコードの「人間が読める」簡単な要約を書き込みます。

$ JDK_HOME/jre/lib/logging.propertiesの代わりにこの構成ファイルを使用するようにJavaに指示するには:

Java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
1
Awanish Kumar

Nullの場合、ファイルパスはEclipseホームディレクトリになります。 logging.propertiesファイルはシステムによって呼び出されないため、以下に示すようにプロパティファイルを完全なパスにポイントすると、yorが希望する直接の場所にログファイルが生成されます。 -Djava.util.logging.config.file = D:\ keplereclipse\keplerws\NFCInvoicingProject\WebContent\WEB-INF\logging.properties

0
KHALEEL SHAIK

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

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

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

0
Markus Bucher
  1. 変数または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)を呼び出すLogManager.readConfiguration()を使用して、mainメソッドで再初期化することもできます。

0
lzhlyle