6

我正在使用嵌入式 Jetty 9,路径中有 slf4j.jar。默认情况下,jetty 会记录大量信息。

我想禁用日志记录,或者至少将日志级别更改为 INFO。我怎样才能在程序中做到这一点(即,不放一些 xml 配置文件)?

4

1 回答 1

13

没有办法直接使用 slf4j 来设置Logger级别,因为 slf4j 只是一个日志外观/路由 API。

您需要依赖底层日志实现来设置命名空间“org.eclipse.jetty”的日志级别,例如:

  • 如果使用 slf4j-simple.jar 和SimpleLogger,那么您不能以编程方式设置级别,只能在 SimpleLogger 初始化后通过系统属性来设置,这在 JVM 中是非常早期的。

  • 如果使用 slf4j-log4j.jar,请使用Log4j 特定技术

org.apache.log4j.LogManager.getLogger("org.eclipse.jetty").setLevel(Level.WARN);
  • 如果使用 slf4j-jdk14.jar,请使用 java.util.logging 技术。
java.util.logging.LoggerFactory.getLogger("org.eclipse.jetty").setLevel(Level.WARNING);
  • 如果使用 logback.jar,请将 slf4j Logger 转换为logback Logger,然后设置 Level。
final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger("org.eclipse.jetty");
if (!(logger instanceof ch.qos.logback.classic.Logger)) {
    return;
}
ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger;
logbackLogger.setLevel(ch.qos.logback.classic.Level.WARN);
于 2012-12-17T18:46:16.023 回答