我想以编程方式配置我的java.util.logging.Logger
。根据Oracle Docs,似乎有可能。以编程方式配置记录器
但是这个例子说明什么是错在这里:
public static void main(String[] args) {
Logger logger = Logger.getLogger("org.acme.project");
logger.setLevel(Level.SEVERE);
logger = null;
System.gc();
logger = Logger.getLogger("org.acme.project");
logger.warning("You shouldn't see this warning!");
logger.severe("But this error!");
}
如果您运行的代码,你会看到两个消息。但是,如果删除logger = null;
或System.gc();
,则只会看到正确的第二个,这证明垃圾收集器仅删除配置的记录器,并将其保留为Logger.getLogger(String)
并创建一个新的(默认)记录器。为了“解决”这个问题,我可以在某个地方举一个特定记录器的引用,但我认为这不是一个好主意。
那么如何以编程方式定义记录器?
花了我一秒钟才明白为什么我从未遇到OP的问题。这绝对是你应该使用的成语。 – Qix