1

Jettyサーバーでいくつかのアプリケーションを実行しています。各アプリケーションには、/ contextsフォルダーに独自のコンテキストファイルがあり、各アプリケーションは独自のログファイルを指定しています。

jettyを起動すると、すべてのアプリケーションが起動し、すべてのログファイルが作成されますが、すべての出力は最後に作成されたログファイルに送信され、他のファイルは空のままになります。

すべてのコンテキストのロギングを説明する部分は次のようになります。各コンテキストに独自の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)コンテキストベースのロギングは、Slf4j + Logbackを使用するようにJettyを構成してからMDCHandlerからの情報を使用してデプロイされたWebアプリケーションのコンテキストに従ってふるいにかけるSiftingAppender構成でログバックを構成することで実行できます。

これは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 に答える