2010-10-15 64 views
20

我無法調整java日誌記錄的日誌級別。我使用maven surefire(mvn test),並嘗試從默認的INFO調整到例如FINEST。maven下的日誌級別surefire

我下SRC logging.properties文件/測試/資源/ logging.properties

編譯後,我看到目標/測試類下,我看到與預期的配置一個logging.properties文件:

java.util.logging.ConsoleHandler.level = FINEST

javax.enterprise.system.container.ejb.level = FINE

...

但是,glassfish的控制檯輸出只有INFO/SEVERE級別消息。

我哪裏錯了?或者這是另一個與maven對接的事情的痛苦?

+0

我在這裏有點困惑。 glassfish如何適應這個?我認爲你可能在glassfish的日誌記錄和maven單元測試日誌之間感到困惑。 Maven構建用於日誌記錄的框架是什麼? – drekka 2010-10-15 02:35:18

+0

我正在調試在glassfish v3中使用嵌入式容器的單元測試。根據:http://forums.java.net/jive/thread.jspa?messageID=395759,在'Marina Vatkina'的回覆下,這是爲EJB容器輸出FINE消息的關鍵...我想我的問題是我的設置正確的Java實用程序日誌記錄?還是需要額外的配置? - 不只是對於這個特定的實例,但可以說我有一個類com.something.Main,我想輸出FINEST消息... – Dzhu 2010-10-15 03:30:42

回答

8

您需要指定日誌文件中的處理程序

handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler 

那麼它應該工作

3

看起來像它不可能還下行家?:

http://jira.codehaus.org/browse/MNG-2570

此外,當我安裝了POM使用自定義java.util.logging的屬性文件如下:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
    <systemProperties> 
     <property> 
     <name>java.util.logging.config.file</name> 
     <value>${project.build.directory}/test-classes/logging.properties</value> 
     </property> 
    </systemProperties> 
    ... 

日誌記錄消失...

+0

我只能得到日誌我可以控制,如果我指定的日誌記錄的位置。屬性文件與系統屬性。您的表達屬性的方式適用於我,就像'src/test/resources/logging.properties'一樣。 – sjlevin 2014-11-25 21:31:20

3

嘗試

${build.testOutputDirectory}/logging.properties 

而且,我surfire-ARGS在命令行上指定這個東西。

<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine> 
14

我試圖在MAVEN_OPTS環境變量,它不工作,但最後設置java.util.logging.config.file得到它通過把該系統屬性在pom.xml(當然創建工作的src/test下適當logging.properties /資源):

<plugins> 
     <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <systemProperties> 
      <property> 
       <name>java.util.logging.config.file</name> 
       <value>src/test/resources/logging.properties</value> 
      </property> 
      </systemProperties> 
     </configuration> 
     </plugin> 
    </plugins> 
+0

在maven命令行上設置'-Djava.util.logging.config.file'對我來說不起作用,但是確實如此。 – sjlevin 2014-11-25 21:22:22

+0

因爲surefire插件不會傳播您傳遞給所有系統屬性的函數,而是將命令行傳遞給實際的單元測試執行程序 – 2015-10-14 13:12:28

1

我一直在尋找這個確切問題,但不想爲每次項目配置(pom.xml的)文件的變化,我需要在一個特定的日誌測試。

-D屬性從maven命令行運行。如果您使用的是通用級分母.level=FINEST注意,第三方日誌記錄也將出現在該級別

mvn -Djava.util.logging.config.file=`enter filename here` test 

因此,你可以選擇在命令行日誌配置文件。

要禁用或將Maven或第三方日誌記錄設置爲特定級別,請在所選日誌配置文件中爲這些類使用顯式日誌級別選擇。

我有很多來自com.google.inject日誌行.....

aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Instance member validation: 3ms 
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Provider verification: 1ms 
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Static member injection: 1ms 

所以我補充一下:

com.google.inject.level=INFO 

到文件中。請記住,級別設置對所有子類都是遞歸的。因此com.level=NONE將禁用來自com域的所有記錄器的所有記錄。

將此與測試選擇功能-Dtest=...結合在一起,描述爲here的surefire插件對於隔離錯誤和錯誤非常有用。