我正在将我的应用程序部署为野蝇 13 中的耳朵存档。耳朵里有战争和ejb。ejb 用于不同的项目。我想将战争和 ejb 中的信息记录到一个文件中,以便在单个日志文件中拥有完整的上下文。
我设法通过 logback 记录了战争,但来自 ejb 的日志没有通过 logback 记录。
我目前的设置:
- 在我的耳模中,我有一个 jboss 部署结构.xml在我的耳文件中排除日志记录子系统
- 在我的 Web 模块中,logback.xml 位于 WEB-INF/classes 中
- 在我的网络模块中,我有对logback-classic和slf4j的依赖
- 在我的 ejb 模块中,我依赖于 slf4j
有什么建议吗?
如果您只是记录到一个文件,则可以使用日志记录配置文件,该配置文件允许您进行运行时更改,并且如果您想更改日志记录配置,则不必重新调整应用程序。
使用野蝇日志记录
配置文件配置示例
/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])
然后,您只需在 EAR 的清单中添加Logging-Profile: ear1
条目即可。
使用登录
如果要继续使用logback,则需要将logback和slf4j依赖项放在EAR/lib
目录中。诀窍是弄清楚将回日志配置文件放在哪里。它可能适用于EAR/META-INF
或EAR/lib
,但我不确定。如果你把它放在WAR/WEB-INF/classes
中,它甚至可能工作,但是你需要确保在 WAR 中访问一个记录器,然后再在 EJB 中访问一个记录器。
您还需要确保排除 EAR 的 org.slf4j.api
模块或logging
子系统以及jboss-deployment-structure.xml
中的每个子系统。