Java Logging – 我的日志文件在哪里?

我找不到我的日志文件了。

我在Windows XP上的Eclipse 3.7.1 java.util.logging使用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.logjava4.log ,但它们都不包含我的日志记录,甚至包含今天日期的记录。 我做了一些谷歌搜索,发现跟踪和记录 ,这意味着我的日志应该在不同的位置, c:\Documents and Settings\[My Windows ID]\Application Data\Sun\Java\Deployment\log 。 那里有一个名为plugin5581819941091650582.log文件,但它基本上是空的:

     

它的创建日期是上周。 (我不确定是什么过程创建它;我当然没有明确创建它。)

那么我的日志文件在哪里呢? 我无法想到其他任何地方。

另外,有没有人知道logging.properties更改何时生效? 如果我更改了日志级别或FileHandler.pattern ,那么在我的程序看到更改之前会发生什么? 仅仅保存logging.properties的更改显然是不够的。 我需要重启Eclipse吗? 或重启电脑? 只是好奇。 对我来说,找到我的日志文件实际位置并不是什么大不了的事。

您的logging.properties文件位于何处? 它应该在类路径的根目录中可用。 作为完整性检查,以下代码打印了什么?

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

如果代码在static上下文中,请使用

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

.log文件位于\ workspace.metadata文件夹中。 我正在使用Eclipse 4.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后,将按照文件中的指定生成日志。

可以通过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=/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编写简短的“人类可读”日志记录摘要。

要指示java使用此配置文件而不是$ JDK_HOME / jre / lib / logging.properties:

 java -Djava.util.logging.config.file=/scratch/user/config/logging.properties 

如果为null,那么文件路径将是您的eclipse主目录。 您的logging.properties文件没有被系统忽略,因此将属性文件指向完整路径,如下所示,然后您的日志文件将在您更喜欢的地方直接生成。 -Djava.util.logging.config.file = d:\ keplereclipse \ keplerws \ NFCInvoicingProject \的WebContent \ WEB-INF \ logging.properties

似乎默认位置已更改。 要查找日志文件,请使用您的应用程序打开Java控制台。 在那里按“s”。 这将打印出System- and Deployment-Properties,您可以在其中找到以下内容:

 deployment.user.logdir = C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\log 

在那里你会找到你的日志文件。