【问题标题】:Should be logger always final and static?记录器应该始终是最终的和静态的吗?
【发布时间】:2011-11-11 13:39:36
【问题描述】:

可以从多个线程访问类。在这种情况下,记录器也必须是最终的和静态的? 谢谢。

【问题讨论】:

标签: java logging static final


【解决方案1】:

是的,记录器应该是静态的和最终的。也最好是私人的。每个类只需要一个记录器实例,而且除非您要动态更改日志首选项,否则最好将其设为 final。

Logger 是线程安全的,您不必担心线程问题。

【讨论】:

    【解决方案2】:

    将记录器设为最终和/或静态不会以任何方式影响记录器使用的线程安全性。如果记录器实例被多个线程使用,请确保您使用的是线程安全记录器。

    一般来说,记录器应该是私有的静态最终的,但不要假设这使它成为线程安全的。大多数常见的日志框架都是线程安全的,所以如果你使用其中之一,你应该很好。

    【讨论】:

      【解决方案3】:

      所有主要的 java 日志记录包(java.util.logginglog4j 等)都是同步和线程安全的。即使从多个线程调用该类,每个类的 private final static 记录器的标准模式也很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-23
        • 1970-01-01
        • 1970-01-01
        • 2019-11-13
        • 1970-01-01
        • 2016-05-07
        • 2014-10-06
        • 2011-04-20
        相关资源
        最近更新 更多