在类之间传递记录器

时间:2010-10-12 14:34:12

标签: java logging

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

子类是一个单独的泛型类(即不依赖于主类),如果没有提供,则必须能够创建自己的记录器。

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

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

我将如何做到这一点?

2 个答案:

答案 0 :(得分:12)

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

例如:如果在Main类中使用Logger log = Logger.getLogger(“myLogger”); ,您可以使用Logger.getLogger(“myLogger”);

在任何其他类中获取相同的记录器

答案 1 :(得分:0)

这是我到目前为止所做的:

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);
}