2012-06-23 105 views
2

我很困難讓log4j與我的小maven項目一起工作。在Eclipse中運行該程序不會產生錯誤,並且日誌記錄完美無缺。 然而,當我包的項目,裝入瓶內,我得到以下警告:log4j.properties未在打包的maven jar中找到

log4j:WARN No appenders could be found for logger (org.openrdf.sail.memory.MemoryStore). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

log4j.properties文件打包到我的罐子,它位於的src/main /資源的項目。我閱讀了this文章和log4j網站的配置部分,但無法弄清楚。我已經上傳了我的POM here。 我很感激任何可能幫助我解決問題的提示。

+0

如果包含log4j.property文件,是否檢查過jar的內容? – khmarbaise

+0

請向我們展示源代碼的目錄結構,jar中的目錄結構和pom.xml。 – carlspring

回答

1

<build></build>標記下添加<resource>標記。通過這樣做,我們說如果不採用默認構建,則從指定路徑獲取資源。

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
    </resource> 
</resources>  
+0

我不同意。這是Maven將嘗試複製資源(如果該目錄存在)的默認位置,即使您沒有指定它。定義這不是強制性的,除非你必須使用多個位置來獲取資源。你通常可以跳過這個。 ''也是如此。 – carlspring

1

至於警告消息稱,它無法找到附加器的記錄org.openrdf.sail.memory.MemoryStore。因此,請確保您確實在src/main/resources中有log4j.properties文件,然後按照您的設想確保將其打包到jar。也許出於某種原因,我真的看不到,它沒有打包。你知道,有時候會發生這種情況......如果在jar中有這樣的文件,請確保在最後配置appender來處理org.openrdf.sail.memory.MemoryStore記錄器。

檢查此log4j配置是否工作的最簡單方法可能是爲log4j.rootLogger設置默認控制檯appender。做到這一點,並寫下發生了什麼。

0

你似乎組裝你的jar與它的依賴關係。這可能會導致問題,如果這些瓶子也包含log4j.properties,並在超越你的時候拿起。因此,它無法爲類org.openrdf.sail.memory.MemoryStore找到記錄器。

它只使用一個記錄器文件,其中包含jar的日誌記錄信息以及所有的依賴關係。這只是一個複製和粘貼的問題。它還可以控制依賴類的日誌記錄級別。

0

請注意,log4j.properties是大小寫的;