当前位置: 首页 > 面试题库 >

Log4J:创建Logger实例的策略

赵镜
2023-03-14
问题内容

我决定将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配置工作,但是当启动服务器时,我总是得到一个异常。当试图使用StringUtils时,我也会得到一个类似的异常,它可以通过另一个公共资源库获得。 pom依赖项:

  • 问题内容: 我想在我正在使用的Elasticsearch中执行单元测试, 我正在使用 并参考以下链接以寻求帮助 https://www.elastic.co/guide/en/elasticsearch/reference/1.6/using- elasticsearch-test-classes .html https://github.com/elastic/elasticsearch/blo

  • 我想在Elasticsearch中执行单元测试,因为我正在使用

  • 问题内容: 我遇到了一个有趣的问题,其中在运行时找不到org.apache.log4j.Logger类。我正在尝试获得授权,这就是失败的地方: 我正在使用JDeveloper 11.1.1.6。这是我所知道的: 我已经查看了我的UI.war / WEB-INF / lib目录,在那里看到了log4j-1.2.17.jar。 抱怨它的类是org.opensaml.xml.XMLConfigurato

  • 本文向大家介绍laravel框架创建授权策略实例分析,包括了laravel框架创建授权策略实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了laravel框架创建授权策略。分享给大家供大家参考,具体如下: 用户只能编辑自己的资料 在完成对未登录用户的限制之后,接下来我们要限制的是已登录用户的操作,当 id 为 1 的用户去尝试更新 id 为 2 的用户信息时,我们应该返回一个 403

  • 我正在使用一个简单的Java命令行,需要将log4j插入到我的应用程序中,因此我遵循本教程: http://veerasundar.com/blog/2009/07/log4j-tutorial-adding-log4j-logging-to-your-project/ 因此,我完成了以下步骤: > 我将log4jjar文件放入我的项目库中。 我把log4j放进去了。属性转换为配置包,我使用以下最