WIldfly 10 + logback

问题描述:

我花了几天的时间试图用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是一个和平的蛋糕。 我很欣赏这个问题的所有好建议和经验。

您对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