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

记录器应该始终是最终的还是静态的?

公孙宏畅
2023-03-14
问题内容

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


问题答案:

所有主要的Java日志记录程序包(java.util.logging,log4j等)都是同步的并且是线程安全的。private final static即使从多个线程调用该类,每个类的记录器的标准模式也可以。



 类似资料:
  • 问题内容: 我在网上找不到任何参考资料。但是只是想知道类中的最终字段应该一直还是只是一个约定。基于对它们的用法的理解,我觉得这比语言所强加的东西更合乎逻辑。 问题答案: 当然不是。如果它们属于该类,则必须是静态的;如果它们属于该类的实例,则必须是静态的:

  • 问题内容: 在Java中,静态最终变量是常量,并且约定应使用大写形式。但是,我已经看到大多数人以小写形式声明记录器,这在PMD中是违反的。 例如: 只需在Google或SO中搜索“静态最终记录器”,您便会自己看到它。 我们应该改用LOGGER吗? 问题答案: 记录器引用不是常量,而是最终引用,并且不应大写。常数VALUE应该为大写。

  • 问题内容: 我找到了一个代码,它声明了如下代码 它们之间有什么区别或相同?还是与或不同? 问题答案: 完全没有区别。根据 Java语言规范的8.3.1-类-字段修饰符, 如果两个或多个(不同的)字段修饰符出现在字段声明中,则按惯例(尽管不是必需的),它们的出现顺序与上面FieldModifier生产中所示的顺序一致。 对于字段,所述生产按以下顺序列出修饰符: 对于方法:

  • 问题内容: 是否应该将记录器声明为静态?通常,我已经看到记录器的两种类型的声明: 要么 应该使用哪一个?两者的优缺点是什么? 问题答案: 非静态形式的优点是,您可以像下面的(抽象)基类中声明它,而不必担心会使用正确的类名: 但是,其缺点显然是将为该类的每个实例创建一个全新的记录器实例。这本身可能并不昂贵,但会增加大量开销。如果您想避免这种情况,请改用表格。但是它的缺点是,您必须在每个单独的类中声明

  • 假设我运行了一个带有ErrorAction Stop的命令,它生成了一个错误。我想知道错误最初是否终止?我有ErrorVariable或$Error对象。ErrorVariable能捕捉两种错误吗?我正在寻找一处房产。NET/PowerShell对象,它可以告诉我这个错误正在终止。非终止错误也会产生异常吗? 另外,当我在控制台上写一个命令时(不是ISE也没有运行脚本,只是在控制台上写一个命令),我

  • 我在我的应用程序中使用SLF4J和LogBack。我使用了几个也使用SLF4J的第三方库。为了隐藏他们的日志,我将根日志级别设置为“WARN”。但是,对于我自己的记录器,我想在日志输出中显示所有内容(无论消息级别如何)。这是我目前的配置: 不幸的是,上面显示的配置无法按预期为我工作。我只收到来自“MyLogger”类的消息,如果它们的日志级别为WARN或更高。 总结一下我想要的: 通常,只应记录级