2009-11-29 287 views
1

我已經編寫了一個自定義log4j appender,爲每個日誌條目創建一個新的Solr文檔,並且在將它部署到JBoss時遇到問題。我應該如何處理自定義Log4j appender dependancies

來源可在github上看到,但真正的問題是試圖使用JBoss的appender。像這樣的jboss-log4j.xml文件的樣子

的培訓相關的位:

<appender name="SOLR" class="com.stuartgrimshaw.solrIndexAppender.SolrIndexAppender" /> 

<root> 
    <priority value="${jboss.server.log.threshold}"/> 
    <appender-ref ref="CONSOLE"/> 
    <appender-ref ref="FILE"/> 
    <appender-ref ref="SOLR"/> 
</root> 

爲Solr的的依賴都在提供真實.war文件可用,但我猜測,當附加器被初始化相當早在啓動過程中,該應用程序尚未部署的是,這就是爲什麼我在日誌中看到以下錯誤:

2009-11-29 10:40:57,715 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error installing to Create: name=jboss.system:service=Logging,type=Log4jService state=Configured mode=Manual requiredState=Create 
java.lang.NoClassDefFoundError: org/apache/solr/client/solrj/SolrServerException 

有什麼辦法,我可以延遲初始化,直到Solr的應用已部署,還是有辦法部署Solr應用程序,因此它是庫jboss在啓動時是否可見?

回答

3

我認爲你可以在服務器/ [jboss-configuration]/lib(在JBoss 4中,也許在新版本中可能是相同的)部署Solr庫,然後它們在引導時可用。

或者不要在WAR中使用JBoss log4j配置並定義自己的log4j.xml(在lib或類中的JAR中)。它將在部署時由應用程序類加載器加載。

+0

我試過在我想使用的配置文件的lib目錄中部署Solr庫,但是如果我還部署了Solr網絡應用程序,它會給我他們的默認管理界面,我會收到其他Solr郵件列表建議的錯誤是因爲我在兩個地方部署了libs。 我可以嘗試從solr.war文件中提取庫,並將它們部署在/lib中,並將其餘部分部署到/deploy/ – 2009-11-29 16:03:23

+0

個人而言,我更喜歡第二種選擇,我在應用程序中執行日誌記錄級別,而不是容器/服務器級別。 – 2009-11-29 21:02:12

1

正如你已經發現的,你必須把你的JAR放入JBoss配置的lib目錄中,以便引用其在jboss-log4j.xml中的類型,但這通常不是好的做法。

一個非常簡單的選擇是從應用程序內部以編程方式調用log4j API。如果你有WAR,那麼定義一個ServetContextListener(或類似的東西),當WAR部署並且附加你的appender時調用。同樣,在取消部署時,它會分離appender。

請參閱this previous question的答案,瞭解如何開始執行此操作。

0

我猜測這是爲了管理你的日誌文件,並使它們更容易搜索,一個Splunk?然而,這種感覺就像是一種非常奇怪的做法......類似於「看,我可以讓它在後腿上行走」是一種很酷的事情,但是你爲什麼要這麼做呢?

我認爲一個更簡單,更強大的方法是a)抓取Splunk免費版! b)有一個獨立的進程,使用Solr4J從磁盤消耗日誌文件並將它們發送到Solr。

我認爲要求Solr只是做日誌記錄會增加一個巨大的複雜程度。

+0

當我看着Splunk的時候,我有着完全相反的反應,我想「這是很多的安裝,所以我可以搜索一個日誌文件」:-) 我可以看到Splunk的吸引力,但對我的要求來說它是過度的。 – 2009-11-30 20:32:21

+0

我的同事斯科特最近提出了我的答案,並且我的想法已經發展。如果您真的*在日誌文件中使用數據,那麼可能直接將它們附加到Solr中可能會很酷。但是我仍然想把它們寫在磁盤上,或者將它們發送到Syslog作爲中間步驟,然後將它們發送到它們的最終存儲庫,無論您自己的Solr還是像Loggly.com或Splunk這樣的服務是「鬆散的耦合「的路要走。 – 2011-03-31 20:05:34

+0

也有Facebook的Scribe項目,這是一個完整的Splunk安裝和滾動你自己的Solr應用程序和搜索日誌之間的中間地帶。 – 2011-04-02 13:25:37