2013-01-31 134 views
3

我一直在閱讀很多關於這個論壇,jboss文檔和互聯網上成功獲取log4j配置以使用jboss作爲7.1.1,我不想使用jboss中的日誌子系統。我想使用我自己的log4j配置。我的jboss服務器配置爲獨立模式。下面是我做的log4j配置爲基於Docs軟件以便得到:使用jboss-as-7.1.1配置log4j

  1. 定義一個JBoss部署,structure.xml按https://docs.jboss.org/author/display/AS71/How+To#HowTo-HowdoIuselog4j.propertiesorlog4j.xmlinsteadofusingtheloggingsubsystemconfiguration%3F,我添加了這個在我耳邊
  2. 我的META-INF目錄按原樣添加一個log4j.xml,並將其打包在我的耳朵的lib目錄中的jar中。
  3. 從standalone.xml中刪除日誌子系統和擴展模塊=「org.jboss.as.logging」。
  4. 因爲我讀過的是,JBoss服務器將子系統踢之前,使用記錄我並沒有改變其作爲startup.sh啓動參數提供的logging.properties。

儘管做了所有這些,我無法讓應用程序按照我的log4j配置進行登錄。

我使用我自己的log4j配置而不是日誌子系統的原因是能夠使用自定義滾動文件appender進行大小旋轉文件處理程序,因爲我希望旋轉後的文件具有時間戳附加到文件名。

幫助理解,

好了,我創建從SizeRotatingFileHandler.java延伸的類MyHandler.java和我重寫預寫方法。 MyHandler.java位於a.b.c包中。我在模塊a/b/c下創建一個子目錄,並在c目錄內部添加一個只包含Myhandler.class文件的jar。我添加了一個module.xml

<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.0" name="a.b.c"> 
    <resources> 
      <resource-root path="RotatingHandler.jar"/> 
      <!-- Insert resources here --> 
    </resources> 
    <dependencies> 
      <module name="org.jboss.logging"/> 
    </dependencies> 
</module> 

然後在standalone.xml我添加了自定義的處理

<custom-handler name="FILE3" class="a.b.c.MyHandler" module="a.b.c"> 
     <level name="INFO"/> 
     <formatter> 
      <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
     </formatter> 
     <file relative-to="jboss.server.log.dir" path="srveree.log"/> 
    </custom-handler> 

條目當我啓動JBoss它說,它不能找到類a.b.c.MyHandler。我如何解決這個錯誤?

更新:我解決了這個錯誤。模塊內部的包裝結構存在問題。但是,我仍然回到了用jboss-as-7.1.1.Final配置log4j的原始問題。

回答

2

我能夠用jboss配置log4j。事實證明,您需要分別爲主要部署中的每個子部署添加排泄。例如,我有一個耳朵裏面有瓶子和戰爭檔案。所以我在jboss-deployment-structure.xml中爲它們中的每一個添加了單獨的條目,並且它工作正常。

<sub-deployment name="your-subdeployment.jar"> 
    <exclusions> 
     <module name="org.apache.log4j"/> 
     <module name="org.slf4j" /> 
     <module name="org.apache.commons.logging"/> 
     <module name="org.log4j"/> 
     <module name="org.jboss.logging"/> 
    </exclusions> 
</sub-deployment> 
1

你沒有指出的一件事是你是否在EAR/lib文件夾中添加了log4j庫。我認爲你可能有,或者你應該看到其他錯誤。

我不確定log4j在EAR裏面的JAR裏面是否有log4j.xml老實說。我認爲EAR/META-INF對於你的log4j配置文件是一個更合適的地方。

在這種情況下,沒有真正的理由刪除日誌子系統。另外,我並非試圖說服你使用它,但你可以很容易地創建一個自定義處理程序來執行你想要做的事情。您可以將其基於SizeRotatingFileHandler,然後在rename上添加後綴。

+0

謝謝你的迴應James。是的,EAR/lib目錄中有一個log4j-1.2.17.jar。另外我也嘗試將log4j.xml放在EAR/META-INF目錄中,但它仍然沒有從那裏讀取日誌配置。 – TYS

+0

對SizeRotatingFileHandler的引用很有趣,我試着擴展SizeRotatingFileHandler並僅覆蓋preWrite方法。但是我不知道如何獲取當前日誌文件的句柄。 – TYS

+0

我不確定通過獲取當前日誌文件的句柄來遵循你的意思。 –

0

<subsystem xmlns="urn:jboss:domain:logging:1.1"> 

這裏考慮您的standalone.xml配置可以設置

<console-handler name="CONSOLE"> 
      <level name="DEBUG"/> 
... 
     <logger category="com.myCompany"> 
      <level name="DEBUG"/> 
     </logger> 
... 

方式:你在你們班記錄它們在包裝com.myCompany應該從日誌級別的DEBUG。