1

我的应用程序在 Jetty8 中运行,并利用了 Logback 的 RequestLogImpl(顺便说一句,这很棒)。最近我们发现,如果 logback 在文件滚动时出现问题,会提醒我们的日志消息将无处显示,因为我们没有配置 Jetty 将其 stderrout 重定向到任何日志文件。我当前的版本纠正了这个问题,但现在我注意到码头 stderrout 文件中来自 logback 的大量 INFO 消息,例如

06:32:14,893 |-INFO in c.q.l.co.rolling.helper.RenameUtil - Renaming file [/data/logs/md-stage-app4.dev.mgg.request.3.log] to [/data/logs/md-stage-app4.dev.mgg.request.4.log]

我只在重命名失败或其他情况下才真正关心这些消息,这些消息以 WARN 的形式出现。我怎样才能让 logback 的东西只在 WARN 及以上登录到码头 stderrout 日志文件?

我的应用程序本身确实是 <root level="info"> 根记录器。

etc/jetty.xml 有以下摘录:

<!-- Logback Access Log implementation -->
<Ref id="RequestLog">
  <Set name="requestLog">
    <New id="requestLogImpl" class="ch.qos.logback.access.jetty.RequestLogImpl">
      <Set name="fileName">etc/logbackAccess.xml</Set>
    </New>
  </Set>
</Ref>

etc/logbackAccess.xml 是:

<configuration>
  <!-- always a good activate OnConsoleStatusListener -->
  <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />

  <appender name="SIZE_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>/data/logs/md-app3.request.log</File>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>/data/logs/md-app3.request.%i.log</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>5</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>1MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>%h %l %u [%t] "%r" %s %b%n%fullRequest%n</pattern>
    </encoder>
  </appender>

  <appender-ref ref="SIZE_ROLLING" />
</configuration>
4

1 回答 1

1

由于该行打印状态消息

<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />

在 logback-access.xml (在您的情况下为 etc/logbackAccess.xml)。通过调整OnConsoleStatusListenerOnPrintStreamStatusListenerBase,您应该能够创建一个自定义的StatusListener,它打印除了来自 的 INFO 消息之外的状态消息RenameUtil

于 2013-05-04T08:59:50.453 回答