为什么我们需要为每个类创建记录器?

时间:2014-09-12 21:01:54

标签: java logging log4j slf4j

许多论坛和stackoverflow问题表明,创建记录器的推荐方法是按类创建它们。

快速浏览Log4j的 Logger getLogger(String name) 实现表明,所有记录器都存储在静态地图中。

我想知道我们是否在应用程序中有数千个类,并且每个类中都定义了一个记录器,这不会导致内存/性能问题。

或者,为什么我们不能在应用程序中定义一些标准记录器(基于某些功能标准)并让开发人员在类中使用它们。我知道有一个单独的记录器允许我们改变其日志记录级别,但我相信如果有足够的预定义记录器,它不是大问题。

我查看了问题Is a logger per class or is a set of loggers that are accessed by the entire application perferred?Log4J: Strategies for creating Logger instances 但他们似乎没有涵盖这个话题。

1 个答案:

答案 0 :(得分:3)

您没有,它更容易管理。记录器遵循父子关系。孩子们几乎从父母那里继承了一切。通过这种方式,您可以定义非常具体的日志记录行为,或者将其一般性地继承。

  

或者,为什么我们不能定义一些标准记录器(基于一些   应用程序中的功能标准)并由开发人员使用   他们在课堂上。我知道有一个单独的记录器允许   我们要改变它的日志记录水平,但我相信这不是一个大问题   有足够的预定义记录器。

这需要一些非常强烈的依赖注入才能使这些记录器可用于每种类型,也可能增加额外的依赖性。