2012-02-26 679 views
18

我無法找到我的日誌文件。Java日誌記錄 - 我的日誌文件在哪裏?

我在使用Java日誌記錄 - java.util.logging - 在Windows XP上的Eclipse 3.7.1。我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,但它們都不包含我的日誌記錄,甚至沒有包含今天日期的記錄。我做了一些谷歌搜索,發現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

如果你想在你的日誌更多的控制,可我叫另一個庫建議拉的logback?或者你可以看看log4j。 – wheaties 2013-08-02 03:01:15

回答

16

您的logging.properties文件位於哪裏?它應該在類路徑的根目錄中可用。作爲一個完整的檢查,下面的代碼打印了什麼?

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

如果代碼是在static情況下,使用

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

我正在使用Eclipse 3.7.1並安裝了幾個不同的JRE,但我在這個沙箱項目中使用的JRE是1.6.0_18 JDK。 logging.properties文件位於C:\ Program Files \ Java \ jdk1.6.0_18 \ jre \ lib中。對不起,我想在這裏換行,但是當我按下Enter時,它關閉了窗口。當我嘗試System.out.println()時,我得到一個null。很明顯,我的代碼沒有看到logging.properties文件,這就是爲什麼日誌文件沒有去我想要的地方。現在我需要弄清楚爲什麼它看不到logging.properties。那麼,我會開始尋找,如果任何人有建議,我正在聽... – 2012-02-27 18:17:31

+0

我問了如何將logging.properties文件添加到類路徑中的一個新問題,並做了我被告知。 println()現在向我提供了日誌記錄屬性文件的路徑,而不是null。但是我仍然沒有看到我的日誌文件。我有和以前一樣的五個javaX.log文件,它們都沒有改變。任何想法如何解決這個問題? – 2012-02-27 22:17:13

+2

它打印'null' – justSaid 2013-07-27 08:29:44

2

.log文件是在\ workspace.metadata文件夾。我使用的是Eclipse 4.2。 只是一個小白試圖幫助其他小白菜。

0

如果它爲null,那麼文件路徑將會是你的eclipse主目錄。您的logging.properties文件不會被系統所取消,因此請將屬性文件指向如下所示的完整路徑,然後您的日誌文件將在您喜歡的位置直接生成。 -Djava.util.logging.config.file = D:\ keplereclipse \ keplerws \ NFCInvoicingProject \ WebContent \ WEB-INF \ logging.properties

1

問題的根源是他的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,就會按照文件中指定的方式生成日誌。

0

看起來默認位置已經改變。要找到您的日誌文件,請使用您的應用程序打開Java控制檯。在那裏按「s」。這將打印出系統級和部署的屬性,你可以找到類似:

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

在那裏,你會發現你的日誌文件。

0

日誌文件的位置可以通過logging.properties文件進行控制。它可以作爲JVM參數e傳遞:java -Djava.util.logging.config.file=/scratch/user/config/logging.properties

詳情: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm

配置文件處理程序

將日誌發送到一個文件,添加文件處理器在日誌處理程序屬性。屬性文件。這將啓用全局文件記錄。

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寫入簡短的「人類可讀的」日誌記錄摘要。

要指示Java來使用此配置文件,而不是$ JDK_HOME/JRE/lib中/ logging.properties:

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