当前位置: 首页 > 知识库问答 >
问题:

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

鄢禄
2023-03-14
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

共有1个答案

刘俊语
2023-03-14

不要混合使用SLF4J和日志记录实现。SLF4J的思想是,您只需替换一个jar和一个配置文件就可以切换记录器实现。在您的代码中将不会引用任何日志记录改进(lkog4j、util日志记录等)。由于SLF4J是一个日志外观,您将只能控制日志级别和正在记录的内容。处理程序等是日志记录实现的一部分。
您应该让用户自行决定在何处日志、日志的级别等。除此之外;若要禁用util记录器中的控制台日志记录,请执行以下操作。做

获取根记录器logger logger=logger.getLogger(“”);
获取其所有处理程序logger.getHandlers();
迭代并检查其中是否有任何处理程序是instanceof consoleHandler
为该处理程序设置级别con.setLevel(level.off)

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

 类似资料:
  • 在我的Java应用程序中,我使用SLF4J+Logback进行日志记录。我在开发环境中使用调试级日志记录,在生产环境中使用错误级日志记录。但是有一些消息我无论如何都想要记录下来,无论日志级别如何(类似于,但使用的是logger)。 有什么切实可行的方法可以实现这一点吗?我可以使用error或更低的级别,但我想做的是给出一些信息,所以在语义上是错误的,它不是错误。 我可以在我的中为我的类定义另一个记

  • 我正在迁移一个遗留的应用程序来使用logback,在这个过程中我试图保持所有的旧功能以相同的方式工作。遗留应用程序所做的一件事是,如果无法写入日志文件(由于空间不足、权限不正确等原因),则将日志记录到控制台 对于logback,似乎应该由StatusListener来处理这个问题,我可以使用getOrigin获得筛选后的附加程序,但我不知道如何获得与origin附加程序相关联的日志记录程序。有可能

  • 问题内容: 当运行Spring / Hibernate应用程序时,我在控制台上看到以下不需要的输出: 我已经像这样配置了Log4j记录器: 如何使这些消息静音? 问题答案: 我相当确定您正在看到这些SQL语句,因为Hibernate配置中某处的属性“ hibernate.show_sql”设置为true。找到该设置并将其更改为false。

  • 当我尝试运行这段代码时,我在Level Object中面临一些问题。 错误:

  • 问题内容: 我正在使用hibernate3,并希望阻止它将所有启动消息转储到控制台。我尝试注释掉log4j.properties中的stdout行,但是没有运气。我在下面粘贴了我的日志文件。另外,我在标准项目结构中使用eclipse,并且在项目文件夹的根目录和bin文件夹中都有一个log4j.properties副本。 问题答案: 尝试设置更合理的日志记录级别。日志级别设置为仅记录在事件的装置或更

  • 我在Spring Boot(1.3M1)中使用了application.properties,并开始将其转换为yaml文件,因为它变得越来越复杂。 但我在将其转换为YAML时遇到了问题: