0

我正在将我的应用程序部署为 Wildfly 13 中的耳朵存档。耳朵包含战争和 ejb。ejb 用于不同的项目。我想将战争和 ejb 中的信息记录到单个文件中,以获取单个日志文件中发生的完整上下文。

我设法通过 logback 从战争中登录,但是来自 ejb 的日志没有通过 logback 记录。

我目前的设置:

  • 在我的耳朵模块中,我的耳朵文件中有一个 jboss-deployment-structure.xml 以排除日志记录子系统
  • 在我的网络模块中,logback.xml 位于 WEB-INF/classes
  • 在我的网络模块中,我依赖于 logback-classic 和 slf4j
  • 在我的 ejb 模块中,我依赖于 slf4j

有什么建议么?

4

1 回答 1

1

如果您只是记录到一个文件,您可以使用一个记录配置文件,它允许您进行运行时更改,如果您想更改您的日志配置,则不必重新部署您的应用程序。

使用 WildFly 日志记录

示例配置文件配置

/subsystem=logging/logging-profile=ear1:add
/subsystem=logging/logging-profile=ear1/pattern-formatter=PATTERN:add(pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n")
/subsystem=logging/logging-profile=ear1/periodic-rotating-file-handler=FILE:add(append=true, suffix=".yyyy-MM-dd", named-formatter=PATTERN, file={relative-to=jboss.server.log.dir, path="ear1.log"})
/subsystem=logging/logging-profile=ear1/root-logger=ROOT:add(level=INFO, handlers=[FILE])

然后,您只需Logging-Profile: ear1在 EAR 清单中添加条目。

使用 Logback

如果您想继续使用 logback,您需要将 logback 和 slf4j 依赖项放在您的EAR/lib目录中。诀窍在于找出将 logback 配置文件放在哪里。它可能在EAR/META-INF或 中起作用EAR/lib,但我不确定。如果您将它保存在 中,它甚至可能会起作用WAR/WEB-INF/classes,但是您需要确保在 EJB 中访问记录器之前在 WAR 中访问记录器。

您还需要确保排除EAR的org.slf4j.api模块或子系统以及.loggingjboss-deployment-structure.xml

于 2019-01-09T20:11:55.857 回答