1

物理ログ ファイルを見つけることができません。java.util.logging クラスを使用しています。次のコードを含む簡単なサンドボックス クラスがあります。

package test;

import java.util.logging.Level;
import java.util.logging.Logger;

public class TestLogging {

public static void main(String[] args) {

@SuppressWarnings("unused")
TestLogging test = new TestLogging();   
}

public TestLogging() {

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

Logger logger = Logger.getLogger("test"); 
logger.logp(Level.CONFIG, "myClass", "myMethod", "Monday"); 
logger.logp(Level.FINE, "myClass", "myMethod", "Tuesday"); 
logger.logp(Level.FINER, "myClass", "myMethod", "Wednesday"); 
logger.logp(Level.FINEST, "myClass", "myMethod", "Thursday"); 
logger.logp(Level.INFO, "myClass", "myMethod", "Friday"); 
logger.logp(Level.SEVERE, "myClass", "myMethod", "Saturday"); 
logger.logp(Level.WARNING, "myClass", "myMethod", "Sunday");      
}
}

私のlogging.propertiesファイル(ここでもコメントが削除されています)は次のとおりです。

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level= ALL
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
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
x.y.level = SEVERE
x.y.z.level = WARNING
org.sscce.level = WARNING
org.sscce.baz3.level = INFO

logging.properties ファイルは、このクラスの実行構成のユーザー エントリの下のクラスパスにあります。

クラスを実行すると、コンソールに次のように表示されます。

file:/C:/Program%20Files/Java/jdk1.6.0_18/jre/lib/logging.properties
28-Feb-2012 2:05:55 PM myClass myMethod
INFO: Friday
28-Feb-2012 2:05:56 PM myClass myMethod
SEVERE: Saturday
28-Feb-2012 2:05:56 PM myClass myMethod
WARNING: Sunday

コンソールのログ レベルを INFO にするように要求しましたが、それがコンソールにあるすべてなので、その部分は機能しているようです。しかし、%h (C:\Documents and Settings[My Windows ID]) で物理的な Java ログを探すと、javaX.log (X は整数) というパターンに従うファイルはありません。

私は何を間違っていますか?プログラムは logging.properties ファイルを認識していませんか? または、物理ログが書き込まれないように何らかの方法で値が設定されていますか?

明らかに間違っているものは見当たらないので、これをデバッグするのに助けが必要です。テイカーはいますか?

4

1 に答える 1

2

ログ ファイルを見つけるには、 が変数%hの値を表していることを知る必要がありuser.homeます。

それを取得するには、次を実行します。System.out.println("%h: " + System.getProperty("user.home"));

System.property で使用しているプロパティ ファイルも設定する必要があります。これを行う 1 つの方法を次に示します。それ以外の場合は、おそらく想定されていないデフォルトを使用します。

java -Djava.util.logging.config.file=mylogging.properties

ロギング クラスの使用を開始する前に、プログラムで行うこともできます。

また

paths with spaces + Java == pain and suffering

常に/パス区切りとして使用すると、Java は Windows でも正しいことを行います。

于 2012-02-28T19:39:56.717 に答える