WIldfly 10 + logback
我花了几天的时间试图用wildfly 10项目设置logback。WIldfly 10 + logback
我的目标是:
- 服务器日志应该由wildfly记录器来创建。
- 我的EAR日志应该由logback创建。
- 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-dependencies
和use-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岗位。
我将jboss-deployment-structure.xml添加到目录src/main/resources/META-INF /下的所有子部署中(EJB,WEB - 其他似乎自动生成)。它不幸没有帮助。你的答案的第二部分几乎是完美的,但控制台日志仍然存在问题 - 它们被野蛮日志“包装”。我看到@gandalfml具有相同的[问题](http://stackoverflow.com/questions/37377043/configure-logback-in-wildfly)并没有解决它。 – LukTar
对不起,我应该澄清。您需要将排除添加到EAR中的jboss-deployment-structure.xml。你最终会得到一些
我可以停止在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