2012-02-28 170 views
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找我的身体的java日志:\ Documents和Settings [我的Windows ID],没有遵循模式javaX.log其中X是一个整数的文件。

我在做什么错?该程序没有看到logging.properties文件?还是以某种方式设置值以防止写入任何物理日志?

我需要调试一些这方面的帮助,因为我看不出什么明显的错误。任何接受者?

+1

您实现与空间'路径+ Java的==疼痛和suffering'! – 2012-02-28 19:34:46

+0

可能的重复[如何使用属性文件设置java日志记录? (java.util.logging)](http://stackoverflow.com/questions/960099/how-to-set-up-java-logging-using-a-properties-file-java-util-logging) – 2012-02-28 19:43:17

回答

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上。

+0

I'我时不时碰到了一个有嵌入空间的路径问题,但这已经有一段时间了。我想这可能是。我可以证明通过将logging.properties复制到没有嵌入空间的地方,如C:\,然后再次尝试。我没有意识到我必须将java -D参数添加到应用程序参数中。我也会尝试。你能提醒我一些事吗?如果我想在Windows中指定属性文件的完整路径,我可以使用C:\ myDir \ logging.properties,还是必须加倍反斜杠并将整个内容放在引号中才能确定? – 2012-02-28 19:54:26

+0

总是用'/'在Java中的路径分隔符,即使在Windows中,它的工作原理吧。 '''''''''''''''''为了安全起见''将所有东西都包裹在'''中'' – 2012-02-28 19:58:12

+0

无所谓!我将logging.properties复制到C:\,并在VM参数中完全像这样写入参数:-Djava.util.logging.config.file = C:\ logging.properties。该代码现在完美工作,我有一个日志,显示本周的所有7天确切的位置。谢谢Jarrod!现在我知道我需要做什么才能按照我的想法进行工作。 – 2012-02-28 19:58:13