我无法找到物理日志文件。我正在使用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中查找我的物理java日志时,即C:\ Documents and Settings [我的Windows ID],没有文件遵循javaX.log模式,其中X是整数。
我做错了什么?程序没有看到logging.properties文件吗?或者以某种方式设置值以防止写入任何物理日志?
我需要一些帮助来调试这个,因为我看不出任何明显错误的东西。任何人?
答案 0 :(得分:2)
要查找日志文件,您需要知道%h
代表user.home
变量中的值。
为此,请执行:System.out.println("%h: " + System.getProperty("user.home"));
您还必须使用System.property设置要使用的属性文件。 这是一种方法,否则它使用的默认值不是你想象的那样。
java -Djava.util.logging.config.file=mylogging.properties
您也可以在开始使用日志记录类之前以编程方式执行此操作。
也
paths with spaces + Java == pain and suffering
并始终使用/
作为路径分隔符,Java将执行正确的操作,即使在Windows上也是如此。