2014-02-28 107 views
4

我想在我的Geb框架中獲得log4j2安裝程序。對於我的生活,我無法弄清楚如何把它放在一起。我有一個log4j2.xml(不是log4j.xml)文件設置與記錄器「Selenium」。在DefaultPage中,我嘗試從配置文件LogManager.getLogger("Selenium")中獲取名爲Selenium的Logger。log4j2配置文件未被識別

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="TRACE"> 
    <Appenders> 
    <Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d{HH:mm:ss,SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </Console> 
    </Appenders> 
    <Loggers> 
     <Logger name="Selenium" level="TRACE"> 
      <AppenderRef ref="Console"/> 
     </Logger> 
    <Root level="TRACE"> 
     <AppenderRef ref="Console"/> 
    </Root> 
    </Loggers> 
</Configuration> 

DefaultPage.groovy

class DefaultPage extends geb.Page { 
    static content = { 
     pageId(wait: true) { $("meta", name: "pageId").getAttribute("content") } 
     pageHeading(wait: true) { $("meta", name: "heading").getAttribute("content") } 
    } 

    static final Logger logger = LogManager.getLogger("Selenium") 

    /** 
    * Uses jquery to create a mouseover on an element 
    * @param element The jquery element created in the page object. 
    */ 
    static def mouseOver(element) { 
     logger.error("Hovering over ${element}") 
     element.jquery.mouseover() 
    } 
} 

測試執行和輸出被寫入STDERR,這是預期的,因爲我有logger.error。但是,它不包含該日期的格式。此外,我還有其他類使用.info調用此記錄器,而在STDOUT中沒有看到這些類。當我調試記錄器的級別是錯誤,而不是TRACE。

這是我的文件結構:

functional 
| 
--src 
    | 
    |--test 
     | 
     |--groovy 
     |  | 
     |  |--com.x.functional 
     |   | 
     |   |--pages 
     |    | 
     |    |--DefaultPage.groovy 
     |    |--Other classes that want to use log4j2. 
     | 
     |--resources 
      | 
      |--log4j2.xml 

謝謝。

編輯 將log4j更改爲log4j2。添加配置狀態= TRACE。使用','而不是'。'修改日期格式爲毫秒。

+0

[日期模式](http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html)是'%d {HH:mm:ss,SSS}'(注意逗號而不是'.'毫秒) – dmahapatro

回答

3

Log4J2將在類路徑中查找名爲log4j2.xml的配置文件。如果找不到這個文件,它會嘗試幾個選擇(請參閱配置手冊頁),但默認情況下不會識別log4j.xml。 (可以告訴log4j2採取一些指定的文件作爲配置:http://logging.apache.org/log4j/2.x/faq.html#config_location

如果找不到配置文件,則會安裝一個默認配置,將ERROR和更高事件記錄到StdErr。

我懷疑這是怎麼回事。解決此問題的最簡單方法是重命名您的配置文件log4j2.xml並將其放置在類路徑中。您可以通過指定<Configuration status="trace">來啓用log4j2內部日誌記錄,以在必要時進一步進行故障排除。

+0

我一定是在讀錯文檔,我以爲它說的是log4j.xml。我最初有log4j2.xml,現在又是log4j2.xml。 代替ERROR,但沒有運氣。我仍然只得到錯誤輸出,這將是默認配置。我也做了日期模式的變化。所以,所有解決的問題仍然存在相同的問題。我創建了一個名稱不在log4j2配置中的另一個記錄器。硒記錄儀和x記錄儀的設置相同。所以我們正在默認。 – TIMBERings

+0

你在類路徑中是否有log4j-api和log4j-core jar文件?另外,類路徑中的log4j2.xml文件是什麼?如果上述兩個答案都是肯定的,那麼在更改爲'>'後,您應該已經開始在控制檯上看到log4j2內部日誌記錄(如log4j2.xml配置文件爲解析,appenders安裝等)。你看到了嗎?一旦解決了這個問題,我認爲應用程序中的「跟蹤」級別日誌記錄也會起作用。 –