更改嵌入式Jetty日志级别以发现致命错误

时间:2017-01-20 09:10:21

标签: logging jetty embedded-jetty

默认情况下,Jetty不会记录任何级别高于WARN的内容,这不适用于OutOfMemory错误等致命错误。 (大多数企业操作监控团队在日志中查找ERROR,而不是WARN。)

如何安排日志记录,以便在ERROR级别报告这些致命错误?

1 个答案:

答案 0 :(得分:1)

我发现可以使用ch.qos.logback.classic.turbo.TurboFilter配置logback来调整日志记录

以下是Scala中的一个示例,它将org.eclipse.jetty记录器的所有WARN转换为ERROR:

import ch.qos.logback.classic.{Level, Logger}
import ch.qos.logback.classic.turbo.TurboFilter
import ch.qos.logback.core.spi.FilterReply
import org.slf4j.{LoggerFactory, Marker}

/**
* Lift the log level of all WARN events to ERROR as Jetty will not
* log anything above WARN level.
*/
class JettyShoutyFilter extends TurboFilter {
  val myLogger = LoggerFactory.getLogger(getClass)

  override def decide(marker: Marker, logger: Logger, level: Level, format: String, params: Array[AnyRef], t: Throwable): FilterReply = {
    if (isStarted && logger.getName.startsWith("org.eclipse.jetty") && level == Level.WARN && format != null) {
      logger.error(marker, format, params)
      FilterReply.DENY
    } else FilterReply.NEUTRAL
  }
}

将记录器添加到配置中:

<configuration>
    <turboFilter class="JettyShoutyFilter"/>
    ...