java - 我的日志文件在哪里?

标签 java java.util.logging

我在查找物理日志文件时遇到问题。我正在使用 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 文件吗?或者是否以某种方式设置值以防止写入任何物理日志?

我需要一些帮助来调试这个问题,因为我看不到任何明显的错误。有接受者吗?

最佳答案

要查找日志文件,您需要知道 %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 上也是如此。

关于java - 我的日志文件在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9488439/

相关文章:

java - 如何在 RapidMiner 扩展中记录第 3 方输出?

java - Spring - 加载 applicationContext.xml 时出现问题

java - 如何使用 Selenium、Java 从 div 元素中获取文本?

java - 在使用 Spring + Hibernate JPA 时不添加 persistence.xml 时使用 native SQL 实体

java - 如何根据参数从 REST 中的 DTO 中排除属性

java - JUL 日志记录 - 消息上的实例前缀

java - 如何将自定义日志处理程序添加到 Google App Engine?

Java:如何将java.util.logging的语言更改为英语?

java hibernate数据库连接

java - Google App Engine - 配置默认记录器以发送电子邮件