在类之间传递记录器

我的项目中有两个类,我想将记录器从主类传递给子类,并让子类使用父级的记录器设置。

子类是一个单独的generics类(即没有绑定到主类),如果没有提供,则必须能够创建自己的记录器。

主类创建一个记录器,添加一个控制台处理程序,文件处理程序和日志格式化程序,我希望子类能够临时覆盖日志格式化程序的日志消息,然后当主类恢复时,恢复为它的日志格式化程序。

我曾尝试将记录器添加到子类中,或者根据需要创建一个新的记录器,但是我在屏幕上和日志文件中得到了多条消息(它似乎将处理程序附加到主类而不是覆盖 – 骑它)。

我该怎么做呢?

我假设您正在使用java.util.logging包。 在这种情况下,无论何时何地使用Logger.getLogger(someString),您都将获得相同的Logger实例。

例如:如果在Main类中使用Logger log = Logger.getLogger(“myLogger”); ,你可以使用Logger.getLogger(“myLogger”)在任何其他类中获得相同的记录器;

这是我到目前为止:

public void setLogger(String loggerName) { MySubClass.logger = Logger.getLogger(loggerName); for (Handler handler : logger.getHandlers()) { handler.setFormatter(tmdbFormatter); } logger.setUseParentHandlers(true); logger.setLevel(Level.ALL); }