作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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/
我是一名优秀的程序员,十分优秀!