如何检测已配置Java Util日志记录?

如何检测已配置Java Util日志记录?,java,logging,Java,Logging,我有一些代码,有时从我自己的主方法调用,有时嵌入到其他人的程序中。在配置日志记录时,我希望能够检测到有人已经配置了javautil日志记录,如果他们已经配置了,那么我希望跳过配置。我有这个方法: public static boolean isLoggingAlreadyConfigured(){ Logger logger = Logger.getLogger(""); Handler[] handlers = logger.getHandlers();

我有一些代码,有时从我自己的主方法调用,有时嵌入到其他人的程序中。在配置日志记录时,我希望能够检测到有人已经配置了javautil日志记录,如果他们已经配置了,那么我希望跳过配置。我有这个方法:

public static boolean isLoggingAlreadyConfigured(){        
    Logger logger = Logger.getLogger("");
    Handler[] handlers = logger.getHandlers();
    return handlers != null && handlers.length > 1;
}
但我认为这是不可靠的


你能提出更好的建议吗?

简单的答案是java.util日志记录总是配置好的

for
LogManager
表示它是一个自动创建的全局对象,并且它是根据两个系统属性所说的内容自动配置的,或者(如果没有设置属性)使用内置的日志属性配置来配置的。(有关详细信息,请参阅javadoc)。底线是,您永远不会看到记录器处于“未配置”状态

您可以了解JRE的内置日志属性配置在默认情况下是什么,并测试当前配置是否不同。但这种方法存在一些问题:

  • JRE的内置配置可以进行调整(根据javadoc)
  • 不同的JRE版本可能有默认值(假设…)
最重要的是

  • 您可能无法以编程方式将某些特定于应用程序的配置与默认配置区分开来

我写这段代码已经有一段时间了。。。在如此严峻的形势下。。现在我想知道为什么我的句柄是.length>1而不是0?!做了一个快速测试。。。这是因为根记录器上已经配置了默认处理程序。