许多论坛和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 但他们似乎没有涵盖这个话题。
答案 0 :(得分:3)
您没有,它更容易管理。记录器遵循父子关系。孩子们几乎从父母那里继承了一切。通过这种方式,您可以定义非常具体的日志记录行为,或者将其一般性地继承。
或者,为什么我们不能定义一些标准记录器(基于一些 应用程序中的功能标准)并由开发人员使用 他们在课堂上。我知道有一个单独的记录器允许 我们要改变它的日志记录水平,但我相信这不是一个大问题 有足够的预定义记录器。
这需要一些非常强烈的依赖注入才能使这些记录器可用于每种类型,也可能增加额外的依赖性。