我正在将我的应用程序部署为wildfly 13中的ear存档。ear包含war和ejb。 ejb用于不同的项目。我想将战争和ejb的信息记录到一个文件中,以获取在单个日志文件中所发生情况的完整上下文。
我设法通过回溯从战争中记录日志,但是来自ejb的日志没有通过回溯记录。
我当前的设置:
有什么建议吗?
答案 0 :(得分:1)
如果您仅登录到文件,则可以使用logging-profile,它允许您进行运行时更改,并且如果要更改日志记录配置,则不必重新部署应用程序。
配置文件配置示例
/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
目录中。技巧将是弄清楚将logback配置文件放在何处。它可能在EAR/META-INF
或EAR/lib
中都有效,但是我不确定。如果将其保存在WAR/WEB-INF/classes
中,它甚至可以工作,但是您需要确保在WAR中访问记录器,然后才能在EJB中对其进行访问。
您还需要确保排除EAR的org.slf4j.api
模块或logging
子系统以及jboss-deployment-structure.xml
中的每个子部署。