为部署到Jetty的每个war分离日志文件

时间:2012-12-26 15:15:28

标签: logging jetty war slf4j logback

我有一个打包为war文件的Web应用程序,它使用slf4j作为日志记录。它取决于slf4j-api-*.jar,但不包含一个内部。我想将此战争部署到Jetty并配置Web容器端的日志记录 我已将slf4j-api-*.jarlogback-classic-*.jarlogback-core-*.jar添加到${jetty.home}/lib/ext,将logback.xml添加到${jetty.home}/resources,我将其配置为将日志写入{{1} }}。
这非常有效,但我已将所有内容记录到${jetty.home}/logs/jetty.log。我想将每个war日志和jetty自己的日志写入单独的文件。

  1. 记录框架并不重要,我可以使用不同的东西,如果它有帮助就可以使用logback。
  2. 我已经阅读了logback docs中的“Logging Separation”一章。这迫使我改变我的web.xml并将logback jar添加到war中,所以这不是我想要的。
  3. 我已经读过“Jetty / Tutorial / Sifting Logs with Logback”。它是关于通过hotstname而不是应用程序进行分离,所以它也无济于事。

1 个答案:

答案 0 :(得分:1)

在文档Sifting Logs with LogBack中,该示例使用slf4j MDC将“host”设置为拆分。您可以使用自己的MDCHandler

来使用任何拆分选项

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

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