我在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
有人能告诉我这是怎样的正确方法吗?
答案 0 :(得分:2)
(Web)基于上下文的日志记录可以完成配置Jetty使用Slf4j + Logback,然后使用SiftingAppender配置配置使用来自MDCHandler的信息的logback到sift according to context of the deployed webapp。
记录于http://wiki.eclipse.org/Jetty/Tutorial/Sifting_Logs_with_Logback
甚至有一个示例项目在https://github.com/jetty-project/jetty-and-logback-example
中显示了这一点