0

我在 jdk 内置记录器上使用 slf4j 日志记录外观。我很困惑如何使用 SLF4J 的 ConsoleHandler 设置日志记录级别。

public Class foo(){
   Logger log = Logger.getLogger(foo.class()) //logger from SLF
   public void run(){
       log.info("info")
    }
   private static void main(String[] args){
     ConsoleHandler con = new ConsoleHandeler(); //from java.util.logging
     con.setLevel(Level.OFF)
     run()
    }
   }


  >INFO: info

信息不应该被关闭吗?我不想设置日志记录属性文件,因为我希望用户从命令行界面输入他们想要的日志记录级别。我只关心控制台附加。是不是和这个类似:Using java.util.logging to log on the console

4

1 回答 1

1

不要混合使用 SLF4J 和日志记录实现。SLF4J 的想法是你可以通过替换一个 jar 和一个配置文件来切换记录器的实现。您的代码中不会引用任何日志记录实现(lkog4j、util logging 等)。由于 SLF4J 是一个日志外观,您将只能控制日志级别和正在记录的内容。处理程序等是日志记录实现的一部分。
您应该让用户决定在哪里记录,记录什么级别等。

除此之外;在 util logger 中禁用控制台日志记录。做

获取根记录器Logger logger = Logger.getLogger("");
获取其所有处理程序logger.getHandlers();
迭代并检查是否instanceof ConsoleHandler
为该处理程序设置了任何级别con.setLevel(Level.OFF)

在您的main方法中,您刚刚创建了一个新的 ConsoleHandler。它与任何记录器无关,因此不会发生任何事情。

于 2013-03-07T12:17:32.330 回答