Log4J:创建Logger实例的策略

我决定将Log4J日志记录框架用于新的Java项目。我想知道应该使用什么策略来创建/管理Logger实例,为什么?

  • 每个类一个Logger实例,例如

    class Foo {

    private static final Logger log = Logger.getLogger(Foo.class);

    }

  • 每个线程一个Logger实例

  • 每个应用程序一个Logger实例
  • 水平切片:应用程序每一层(例如,视图层,控制器层和持久层)中Logger的一个实例
  • 垂直切片:应用程序功能分区内Logger的一个实例

注意:这些文章在某种程度上已经考虑了此问题:

回答:

通常,您需要为每个类设置记录器,因为这是一个不错的逻辑组件。线程已经是日志消息的一部分(如果您的过滤器显示了它们),因此以这种方式对记录器进行切片可能是多余的。

对于基于应用程序或基于层的记录器,问题在于您必须找到放置该Logger对象的位置。没什么大不了的。更大的问题是,某些类可能会在多个应用程序的多个级别上使用……可能很难使记录器正确。或至少是棘手的。

…而您想要的最后一件事是日志记录设置中的错误假设。

如果您关心应用程序和层并具有简单的分离点,则可以使用NDC。有时代码可能有点多余,但是我不知道我被精确的上下文堆栈保存了多少次,这表明我从Y层的应用程序X调用了Foo.bar()。

以上是 Log4J:创建Logger实例的策略 的全部内容, 来源链接: utcz.com/qa/404606.html

回到顶部