9

有没有人让 SLF4J / logback 与 JBoss 7 一起工作?

以前,我可以通过将我的“logback.groovy”放在 [server]/conf 中,并将 logback 核心、classic (0.9.28) 和 Groovy (1.8.0) JAR 放在[服务器]/lib.

对于 JBoss 7.0.1,我已将 Groovy 和 logback 模块设置好(已创建 .index 文件),我的 EAR 的 MANIFEST.MF 声明了对这两个模块的依赖关系,并且我的“logback.groovy”部署在我的WAR 模块的 WEB-INF/类,在我的 EAR 中。EAR 的部署肯定没问题 - 灯是绿色的……

尽管如此,实际应用的唯一日志记录规则是在“standalone.xml”中设置的标准 console/server.log 规则。是的,我可以看到我的日志语句(所以 SLF4J 正在工作),但是我的 logback 规则、appender 等被忽略了。在任何日志记录中都没有对 logback 或 Groovy 的引用,所以我假设我没有做足够的工作来触发 logback 的加载和查找我的脚本。

还有其他的事情我可以尝试,但很高兴知道其他人是否尝试过。如果他们没有,也许这表明我应该在 JBoss Logging 中投入大量精力?

4

2 回答 2

9

您确定 logback 处于活动状态吗?如果 logback 找不到配置文件,即 logback.groovy 或 logback.xml,它将在控制台上打印一条警告消息。输出应类似于:

12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.

您在控制台上看到任何此类输出吗?如果没有,假设 Jboss 7 与 slf4j 绑定捆绑在一起,您可能已经在使用 Jboss 日志记录。(您对 slf4j api 的调用被发送到 jboss logging 而不是 logback。)

应该联系 Jboss 人员以了解使用 jboss-logging 以外的日志记录后端。

进一步挖掘,我注意到 JAS7 附带一个名为slf4j-jboss-logmanager-1.0.0.GA.jar的文件,位于./modules/org/slf4j/impl/main/文件夹下。这个文件的内容表明它肯定是一个 slf4j 绑定。我不知道 Jboss“模块”是如何工作的,但是如果你希望 logback-classic 被 slf4j 拾取,删除/禁用 slf4j-jboss-logmanager 是可行的方法。

于 2011-09-21T20:49:00.787 回答
6

JBoss AS7 使用 jboss-logmanager。我假设 logback appenders 需要一个可以处理它们的日志管理器。我不确定如果您关闭日志管理器会发生什么。

支持自定义 java.util.logging.Handler,因此您可以为处理程序中的附加程序编写包装器。我知道这可能并不理想,但它应该可以工作。

我会鼓励任何人使用 JBoss Logging,而不仅仅是因为我在使用它 :-) 它确实有一些不错的功能,比如 var-arg 日志方法,这首先吸引了我。通过接口还支持 i18n 日志记录和消息。

JBoss Logging 也不仅仅是一个 API。这是一个完整的日志框架。在 JBoss Logging 的下一个版本中,我们将提供一种方法来指定您想要使用的日志管理器。这可能会使这样的事情变得更容易一些,但我必须承认我没有在 AS7 中进行测试。如果我有时间,我会的。

于 2011-09-22T16:17:36.370 回答