我无法找到我的日志文件。
我在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
据我所知,在执行这两行之后:
Logger logger = Logger.getLogger("test");
logger.logp(Level.INFO, "myClass", "myMethod", "Alcatraz");
我的日志文件应位于C:\Documents and Settings\[My Windows ID]\javaX.log
,其中X
是整数。
我在该目录中有5个不同的java.log
个文件,java0.log
到java4.log
,但它们都不包含我的日志记录,甚至没有包含今天日期的记录。我做了一些谷歌搜索,发现Tracing and Logging这意味着我的日志应该位于不同的位置,c:\Documents and Settings\[My Windows ID]\Application Data\Sun\Java\Deployment\log
。那里有一个名为plugin5581819941091650582.log
的文件,但它基本上是空的:
<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
</log>
它的创建日期是上周。 (我不确定是什么过程创建它;我当然没有明确地创建它。)
那么我的日志文件在哪里呢?我无法想到其他任何地方。
此外,是否有人知道logging.properties
的更改何时生效?如果我更改了日志级别或FileHandler.pattern
,那么在我的程序看到更改之前会发生什么?仅仅保存logging.properties
中的更改显然是不够的。我需要重启Eclipse吗?或者重启电脑?只是好奇。对我来说,找到我的日志文件实际位置并不是什么大不了的事。
答案 0 :(得分:16)
您的logging.properties
文件位于何处?它应该在类路径的根目录中可用。作为完整性检查,以下代码打印了什么?
System.out.println(getClass().getClassLoader().getResource("logging.properties"));
如果代码位于static
上下文中,请使用
System.out.println(ClassName.class.getClassLoader().getResource("logging.properties"));
答案 1 :(得分:2)
.log文件位于\ workspace.metadata文件夹中。我正在使用Eclipse 4.2。 只是一个努力帮助其他新手的菜鸟。
答案 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后,将按照文件中的指定生成日志。
答案 3 :(得分:1)
日志文件的位置可以通过logging.properties文件进行控制。它可以作为JVM参数传递:java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
详细说明: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm
配置文件处理程序
要将日志发送到文件,请将FileHandler添加到logging.properties文件中的handlers属性中。这将启用全局文件记录。
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以字节为单位指定记录器写入任何一个文件的最大数量。
java.util.logging.FileHandler.count指定要循环的输出文件的数量。
java.util.logging.FileHandler.formatter指定文件处理程序类用于格式化日志消息的java.util.logging格式化程序类。 SimpleFormatter写了简短的#34;人类可读的#34;日志记录摘要。
指示java使用此配置文件而不是$ JDK_HOME / jre / lib / logging.properties:
java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
答案 4 :(得分:0)
如果为null,则文件路径将是您的eclipse主目录。您的logging.properties文件没有被系统淹没,因此将属性文件指向完整路径,如下所示,然后您的日志文件将在您更喜欢的地方直接生成。 -Djava.util.logging.config.file = D:\ keplereclipse \ keplerws \ NFCInvoicingProject \ WebContent \ WEB-INF \ logging.properties
答案 5 :(得分:0)
似乎默认位置已更改。要查找日志文件,请使用您的应用程序打开Java控制台。在那里按“s”。这将打印出System- and Deployment-Properties,您可以在其中找到类似的内容:
deployment.user.logdir = C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\log
在那里你会找到你的日志文件。
答案 6 :(得分:0)
logger.getHandlers()
: just for the instances of FileHandler, and look for its private field: files C:\Windows\
。反映,与技巧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));
}
}
日志管理器将在JVM启动期间初始化,并在main方法之前完成。您还可以使用System.setProperty("java.util.logging.config.file", file)
在main方法中重新初始化它,该方法将调用LogManager.readConfiguration()
。