2

我正在尝试通过属性文件格式化一些 java 日志记录,但是它不起作用。我在属性文件中有这些行:

java.util.logging.ConsoleHandler.formatter=mypackage.logging.LogFormatter
java.util.logging.FileHandler.formatter=mypackage.logging.LogFormatter

我的自定义格式化程序 LogFormatter 在 mypackage.logging 中

日志输出显示正在使用 SimpleFormatter,而不是我的自定义格式化程序。

如何让我的自定义格式化程序通过日志记录属性文件使用?

编辑:我已经尝试了所有预制的格式化程序,例如 com.bea.logging.LogMessageFormatter、SimpleFormatter 和 XmlFormatter。他们工作得很好。这只是我创建的任何新格式化程序都不起作用(扩展格式化程序)。这可能是类路径问题吗?

4

1 回答 1

0

LogManager 将向 System.err 报告错误,该错误可能被重定向到日志文件。找到该日志文件应该可以帮助您。

如果您正在处理从系统类加载器中不可见的任何类,您将遇到JDK-6448699 LogManager 未正确加载日志处理程序并且JDK-6878454 LogManager 类加载与 Java EE 最佳实践不一致

要证明您的 Formatter 在系统类路径中可见,请尝试以下代码:

Class.forName("mypackage.logging.LogFormatter", true, ClassLoader.getSystemClassLoader());

您可以将sun.misc.URLClassPath.debug系统属性设置为true或使用-verbose:class启动时获取更多有关类加载的调试信息。

于 2013-11-27T16:40:59.267 回答