2012-03-02 108 views
2

我想格式化一些java日志记录通过属性文件,但它不工作。 我在性这几行文件:格式化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。他们工作得很好。这只是我创建的任何新格式化程序都不起作用(扩展格式化程序)。这可能是类路径问题吗?

回答

0

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

如果您正在处理从system class loader不可见的任何班级,您将遇到JDK-6448699 LogManager does not load log handler correctlyJDK-6878454 LogManager class loading inconsistent with Java EE best practices

为了证明你的格式化可见从系统类路径试试下面的代码:

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

您可以将sun.misc.URLClassPath.debug系统属性设置为true或使用上推出了-verbose:class得到的类加载一些更多的调试信息。