java util日志记录属性中何时需要“.level”?

如何解决java util日志记录属性中何时需要“.level”?

我见过以多种方式配置的 java util 日志记录。通常,完全限定的类名用于记录器名称。在相应的 logging.properties 文件中,我已经看到以几种不同的方式在包级别或类级别配置日志级别。例如,将 com.example.MyClass 的日志级别设置为 FINE:

  • com.example.level = FINE
  • com.example.* = FINE
  • com.example.MyClass = FINE
  • com.example.MyClass.level = FINE

这四个变体都有效吗(假设它们在文件后面没有被覆盖)? 是否有任何选项比其他选项“更正确”? java.util.logging 是否只是假设 .level 不存在?

我尝试找到有关此配置文件的权威指南,但在 https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html#a1.8 似乎没有具体说明。

解决方法

这四个变体都有效吗(假设它们在文件后面没有被覆盖)?

我见过的大多数在线教程都使用明确的 .level 后缀...这是首选(以及为什么)?

在标准 LogManager 下,com.example.* = FINEcom.example.MyClass = FINE 不会改变级别。键必须以 .level 结尾才能更改级别。

根据 LogManager 文档:

名称以“.level”结尾的所有属性都假定为记录器定义日志级别。因此,“foo.level”为名为“foo”的记录器定义了一个日志级别,并(递归地)为其命名层次结构中的任何子级定义了日志级别。日志级别按它们在属性文件中定义的顺序应用。因此,树中子节点的级别设置应该在其父节点的设置之后。属性名称“.level”可用于设置树根的级别。

如果您使用的是 LogManager 的子类,则需要查阅该文档以验证语法。

如果 java.util.logging 不存在,它是否只是假设 .level?

根据文档,它没有。如果您声明的内容没有 .level,则它只会被视为 LogManager entry

是否有任何选项比其他选项“更正确”?

LogManager 属性文件 can't create loggers。这意味着您的日志文件必须与代码创建记录器的方式相匹配。例如,如果您的文件使用 com.example.level = FINE 而您的代码使用 com.example.MyClass1com.example.MyClass2 作为记录器名称,您将永远不会看到 MyClass1 或 MyClass2 切换到 FINE,因为 the code never created package parent logger。 Root 是所有命名记录器的父级,因此这是一次更改多个记录器的理想方式。如果您需要做一些非常复杂的事情,那么您可以使用 LogManager 支持的 config 选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?