2012-02-28 83 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