2013-02-18 51 views
0

我在運行Java 1.7.0_13/64的Windows7/64上看到我的logj2.xml存在問題。我試圖通過調試器使用NetBeans/64 7.2.1 IDE運行應用程序。使用NetBeans時看不到Log4j2.xml文件

log4j2.xml位於我的r:\目錄中。 (用戶)類路徑是「。; r:\」。它顯然沒有被看到,因爲當我在調試器中查看記錄器的'config.config.name'時,它給了我'Default'的值。另外,我無法在我的機器的任何驅動器上的任何位置找到log4j2.xml文件中指定的文件。我還在我的機器上查找了包含單詞'default'的任何新文件,並且可以找到沒有最新的文件。

所以我懷疑我做1 2的東西錯了:

1)設置我的類路徑不正確。 2)把我的log4j2.xml文件錯誤地放在一起。

任何幫助,將不勝感激。我的鑰匙因用前額敲擊而變得粘稠。

這裏的配置文件:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="debug" name="xxx" packages="" > 
    <appenders> 
     <RollingFile name="log" fileName="qqq.log" 
      immediateFlush="true" filePattern="qqq-%d{yyyy-MM-dd}.log"> 
     <PatternLayout> 
      <pattern>"%d{YYYY-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %n%msg%n%n%n"</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy /> 
      <SizeBasedTriggeringPolicy /> 
     </Policies> 
     <DefaultRolloverStrategy max="92"/> 
     </RollingFile> 
    </appenders> 
    <loggers> 
    <root level="trace"> 
     <appender-ref ref="log"/> 
    </root> 
    </loggers> 
</configuration> 
+0

我相信問題可能是IDE可能不知道環境中的CLASSPATH變量。在IDE中有一個可以添加編譯器選項的文本框,我將在這裏添加適當的類路徑值以指向log4j2.xml文件。當我嘗試這個時,我會報告回來。 – joe7pak 2013-02-19 19:04:25

+0

這在Netbeans中不起作用,將jar文件放在'編譯時庫'中會創建一個事實上的類路徑。通過在編譯器選項文本框中放入'-cp blah; blahblah',不再使用事實上的類路徑,並且必須在項目中指定每個jar文件。也許有一種方法可以使這兩種方法都起作用,但我不會陷入這個兔子洞。 – joe7pak 2013-02-20 00:29:08

回答

1

好,知道了。我將這個問題重命名爲包含NetBeans,因爲這是我的問題的要點。

作爲一個審查,它需要log4j2.xml文件需要在類路徑上。雖然我可以通過將jar文件添加到項目中來影響NetBeans中的類路徑,但我最初並沒有考慮在類路徑中找到配置文件。無論如何,一旦我意識到這一點,我在項目屬性中玩了一下,最後發現只是將文件夾添加到「編譯時庫」對話框(在本例中爲「r:\」)會將配置文件放在類路徑,我的日誌工作就像它應該。

Whe!

希望這可以幫助別人。

1

感謝joe7pak,您的文章是解決NetBeans中log4j屬性問題的難題的最後一部分。我的問題需要一些額外的步驟,可能有助於解決這個問題。

首先,我使用http://wiki.apache.org/logging-log4j/Log4jXmlFormat的默認xml在src目錄中創建了一個log4j.xml文件。

然後,我將Properties \ Run中的NetBeans VM選項設置爲:-Dlog4j.debug。我注意到一個jar的(httpbuilder)log4j.xml文件是默認加載的,而不是我的。

因此,我使用您的建議將src文件夾添加到Properties \ Libraries中的編譯時庫。但是,它仍然從jar中加載log4j.xml文件。

最後一步是將src文件夾移動到編譯時間庫的頂部。

感謝您的文章和回答自己。