2

我有一个打包为 war 文件的 Web 应用程序,它使用 slf4j 作为日志记录外观。它取决于slf4j-api-*.jar,但内部不包含一个。我想将这场战争部署到 Jetty 并在 Web 容器端配置日志记录。
我已经把slf4j-api-*.jar,logback-classic-*.jarlogback-core-*.jarto${jetty.home}/lib/extlogback.xmlto ${jetty.home}/resources, 我配置为将日志写入到${jetty.home}/logs/jetty.log.
这很好用,但我已将所有内容都记录到jetty.log. 我想将每个战争日志和码头自己的日志写入单独的文件。

  1. 日志框架无关紧要,如果有帮助,我可以使用与 logback 不同的东西。
  2. 我已经阅读了 logback 文档中的“记录分离”一章。这迫使我更改 web.xml 并将 logback jar 添加到战争中,所以这不是我想要的。
  3. 我已经阅读了“Jetty/Tutorial/Sifting Logs with Logback”。它是关于按最热名称而不是按应用程序分隔的,所以它也无济于事。
4

1 回答 1

1

在文档中,使用 LogBack 筛选日志,该示例使用slf4j MDC将“主机”设置为拆分。您可以对自己的MDCHandler使用任何您想要的拆分选择。

由于关键是使用 MDCHandler,它必须能够挖掘传入请求对象中存在的任何信息。(这样做的原因是 MDCHandler 不是 webapp 本身的 servlet 范围和上下文的参与者,因为它位于它的前面)

一种技术是使用request.getContextPath()来拆分您的 webapp 已部署到的任何上下文。

于 2013-01-02T22:49:50.250 回答