在java.util.logging
日志记录框架中,有一个名为"global"
的特殊Logger
实例,但我找不到任何有关其预期用途的文档。 Logger.getGlobal()
的文档只是说
反过来,返回名为
Logger.GLOBAL_LOGGER_NAME
的全局记录器对象。
GLOBAL_LOGGER_NAME
是全局记录器的名称。
我相当广泛的搜索没有提供更多有用的文档。
用于什么的全局记录器?这是在我错过的地方记录的吗?
答案 0 :(得分:9)
提供“全局”Logger对象是为了方便开发人员 谁正在随意使用Logging包。开发人员 认真使用日志包(例如在产品中) 应该使用适当的创建和使用自己的Logger对象 名称,以便可以在适当的每个Logger上控制日志记录 粒度。开发人员还需要对他们的内容保持强烈的参考 记录器对象以防止它们被垃圾收集。
来自here(不要注意该字段已被弃用的事实,我只是想指出一个有效的解释)。
通常,在应用程序中启用日志记录时,您可以定义更精细的记录器,通常是每个Java包或类。
如果您不想这样做,可以使用此全局记录器,它将处理所有日志记录语句,无论它们包含在哪个库,包或类中。
答案 1 :(得分:1)
我认为主要问题不是“为什么我们有全局记录器”,而是“我们为什么要使用类指定记录器并使用getLogger()方法以及为什么我们使用它 - Logger.getLogger(”package.className“) ;'
答案是我们使用类命名记录器以方便使用,例如:如果要记录某些特定的类,并且希望在其他类的此类和信息级别上使用调试级别,只能从此类查看调试消息,则可以调整日志记录属性以仅调试此类。
此外,您可以拥有一些抽象类,并且可能有一些记录器,您可能不希望在所有继承的类中使用相同的记录器,您可能希望覆盖继承的类中的记录器并使用某些特定级别为了它。
我相信这非常有用。并回答你的问题,如果你有一个小项目,并且你不想使用类命名记录器,并且只使用一个全局记录器,那么你可以通过运行Logger.getGlobal();
来使用这个记录器。