如何在java.util.logging中获取记录器,以便我可以在运行时更改其日志级别?

时间:2015-04-14 17:40:41

标签: java logging java.util.logging

我在不同的班级中使用java.util.logging。日志级别的默认值为INFO。例如,在一个班级Class1中,它就是这样设置的:

import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Class1 {
   private static final Logger LOGGER = Logger.getLogger(Class1.class.getName());
   static {
       LOGGER.setLevel(Level.INFO);
       for (Handler handler : LOGGER.getHandlers()) {
           handler.setLevel(Level.INFO);
       }           
   }
   ...
}

以上内容与在不同类中设置的方式相同。

现在可以在运行时更改日志级别。例如,假设它在运行时更改为FINEST。在这种情况下,我想获取到目前为止已创建的所有记录器,然后将其日志级别更改为FINEST。我怎样才能做到这一点?我正在考虑创建另一个说LogRepository的课程java.util.List,每当创建一个LOGGER时,我都会将其添加到java.util.List的{​​{1}}中。但我认为可能还有另一种更好的方法。

1 个答案:

答案 0 :(得分:0)

我认为这只是设置所有实例继承的父记录器的级别。

Logger.getLogger("").setLevel(Level.FINEST);