gpt4 book ai didi

java - 使用 SLF4J 设置动态控制台日志记录级别

转载 作者:行者123 更新时间:2023-12-01 14:47:33 25 4
gpt4 key购买 nike

我在 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

最佳答案

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

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

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

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

关于java - 使用 SLF4J 设置动态控制台日志记录级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15264240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com