2017-02-15 131 views
0

我花了幾天的時間試圖用wildfly 10項目設置logback。WIldfly 10 + logback

我的目標是:

  1. 服務器日誌應該由wildfly記錄器來創建。
  2. 我的EAR日誌應該由logback創建。
  3. Logback和wildfly記錄器日誌到控制檯。

我的項目骨架Maven的產生,是如下:

  • 項目名稱
  • 項目名稱入耳
  • 項目名稱,EJB
  • 項目名稱父
  • 項目名稱,網絡

我嘗試將logback.xml添加到web和ejb項目中的資源 - 它不起作用。我是新來的野蠻人,不知道我是否做得對。

我嘗試添加以下代碼根據this page到JBoss部署,structure.xml在所有項目中:

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <deployment> 
    <exclusions> 
     <module name="org.apache.commons.logging" /> 
     <module name="org.apache.log4j" /> 
     <module name="org.jboss.logging" /> 
     <module name="org.jboss.logging.jul-to-slf4j-stub" /> 
     <module name="org.jboss.logmanager" /> 
     <module name="org.jboss.logmanager.log4j" /> 
     <module name="org.slf4j" /> 
     <module name="org.slf4j.impl" /> 
    </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

沒有發生。然後我喜歡另一個:

<jboss-deployment-structure> 
    <deployment> 
    <!-- exclude-subsystem prevents a subsystems deployment unit processors running on a deployment --> 
    <!-- which gives basically the same effect as removing the subsystem, but it only affects single deployment --> 
    <exclude-subsystems> 
     <subsystem name="logging" /> 
    </exclude-subsystems> 
    </deployment> 
</jboss-deployment-structure> 

什麼也沒有發生。我在這一刻做錯了什麼?

然後我發現解決方案用this tutorial替換wildfly記錄器。

它有效,但有一個巨大的缺點。日誌加倍 - 它看起來是logback和wildfly記錄器一次登錄到控制檯。在logger.properties中禁用wildfly記錄器不起作用。

我不知道我花了這麼多時間來實現記錄器。 Logback + android是一個和平的蛋糕。 我很欣賞這個問題的所有好建議和經驗。

回答

1

您對jboss-deployment-structure.xml有什麼作用,但是因爲您使用的是EAR,您需要爲每個sub-deployment執行相同的排除操作。我只是排除日誌子系統,因爲你不需要子系統的任何部分來處理你的部署。

將jboss-deployment-structure.xml添加到您的EAR項目目錄projectname-ear/src/main/application/META-INF

另一種選擇是將add-logging-api-dependenciesuse-deployment-logging-config更改爲false。使用此選項需要注意的是,它會停止將日誌記錄依賴關係添加到所有部署中。如果你只有一個部署或所有的部署我們登錄日誌管理器,那麼這將是最簡單的選擇。

更新:例jboss-deployment-structure.xml

<?xml version="1.0"?> 
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <deployment> 
     <exclude-subsystems> 
      <subsystem name="logging" /> 
     </exclude-subsystems> 
    </deployment> 
    <sub-deployment name="projectname-web.war"> 
     <exclude-subsystems> 
      <subsystem name="logging" /> 
     </exclude-subsystems> 
    </sub-deployment> 
    <sub-deployment name="projectname-ejb.jar"> 
     <exclude-subsystems> 
      <subsystem name="logging" /> 
     </exclude-subsystems> 
    </sub-deployment> 
</jboss-deployment-structure> 

要刪除重複記錄查詢this崗位。

+0

我將jboss-deployment-structure.xml添加到目錄src/main/resources/META-INF /下的所有子部署中(EJB,WEB - 其他似乎自動生成)。它不幸沒有幫助。你的答案的第二部分幾乎是完美的,但控制檯日誌仍然存在問題 - 它們被野蠻日誌「包裝」。我看到@gandalfml具有相同的[問題](http://stackoverflow.com/questions/37377043/configure-logback-in-wildfly)並沒有解決它。 – LukTar

+0

對不起,我應該澄清。您需要將排除添加到EAR中的jboss-deployment-structure.xml。你最終會得到一些

+0

我可以停止在standalone.xml中關閉wildfly日誌記錄,並且生活得很安寧,但我真的想檢查你的第一個建議,所以...我已閱讀關於子部署和ear文件。我發現類似的問題[這裏](http://stackoverflow.com/questions/26137219/war-in-ear-jboss-deployment-structure-xml-ignored)和[這裏](http://stackoverflow.com/questions/26859092/JBoss的部署結構的XML-不 - 不負載最依賴 - 在 - 我的入耳式項目)。對不起,我的noob問題,但如何將jboss-deployment-structure.xml添加到我的EAR項目? – LukTar