1

我在码头服务器上运行几个应用程序,每个应用程序在 /contexts 文件夹中都有它自己的上下文文件,每个应用程序都指定它自己的日志文件。

启动码头时,所有应用程序都已启动,并且正在工作,所有日志文件都被创建,但是 - 所有输出都发送到创建的最后一个日志文件,其他日志文件保持为空。

描述每个上下文的日志记录的部分如下所示。我试图确保每个上下文都有自己的 id 和名称 - 但仍然 - 问题仍然存在。

  <New id="oGMRLog2" class="java.io.PrintStream">
    <Arg>
      <New class="org.mortbay.util.RolloverFileOutputStream">
        <Arg><SystemProperty name="jetty.home" default="."/>/testlogs/std2.yyyy_mm_dd.log</Arg>
        <Arg type="boolean">false</Arg>
        <Arg type="int">90</Arg>
        <Arg><Call class="java.util.TimeZone" name="getTimeZone"><Arg>GMT+2</Arg></Call></Arg>
        <Get id="oGM2ReqLogName" name="datedFilename"/>
      </New>
    </Arg>
  </New>
  <Call class="org.mortbay.log.Log" name="info"><Arg>Redirecting GM stderr/stdout to <Ref id="oGM2ReqLogName"/></Arg></Call>
  <Call class="java.lang.System" name="setErr"><Arg><Ref id="oGMRLog2"/></Arg></Call>
  <Call class="java.lang.System" name="setOut"><Arg><Ref id="oGMRLog2"/></Arg></Call>

我开始怀疑问题出在class="java.lang.System"哪里,打印流应该单独附加到这个上下文,而不是整个 JVM

任何人都可以告诉我什么是正确的方法吗?

4

1 回答 1

2

(Web) 基于上下文的日志记录可以通过将 Jetty 配置为使用Slf4j + Logback来完成,然后使用SiftingAppender配置配置 logback,该配置使用来自MDCHandler的信息根据部署的 webapp 的上下文进行筛选。

它记录在http://wiki.eclipse.org/Jetty/Tutorial/Sifting_Logs_with_Logback

https://github.com/jetty-project/jetty-and-logback-example甚至还有一个示例项目展示了这一点

于 2012-08-11T01:57:58.623 回答