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

Nar*_*ala 10 java logging log4j slf4j

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

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

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

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

我查看了问题是每个类的记录器还是整个​​应用程序访问的一组记录器?Log4J:创建Logger实例的策略, 但它们似乎不包括这个主题.

Sot*_*lis 4

您不必这样做,只是更容易管理。记录器遵循父子关系。孩子几乎继承了父母的一切。通过这种方式,您可以定义非常具体的日志记录行为或将其一般继承。

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

这将需要一些相当强烈的依赖项注入,以使这些记录器可用于每种类型,也可能会增加额外的依赖项。