硬参考您的记录器。经验法则是在类中使用静态的final字段。
public static final String LOGGERNAME = "project.logging";//Pin logger in memory.private static final Logger logger = Logger.getLogger(LOGGERNAME);
从记录仪。getLogger(String)文档:
注意:LogManager可能仅保留对新创建的Logger的弱引用。重要的是要理解,如果没有对Logger的强引用,则可以随时垃圾收集先前创建的具有给定名称的Logger。
当记录器被垃圾回收时,您的ConsoleHandler和FileHandler不会重新连接到新的记录器。
使用FindBugs,因为它检测到以下错误模式:
LG:由于OpenJDK中的参考力弱,可能会丢失记录器更改(LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE)



