使用java.util.logging的好例子 [已关闭]

2022-08-31 05:13:05

我想在我的程序中使用日志。我听说过java.util.logging,但我不知道如何开始。

是否有任何示例说明我可以对日志记录执行哪些操作?如何在自己的程序中使用日志记录?


答案 1

java.util.logging 使您不必在应用程序中再携带一个jar文件,并且它与良好的格式化程序配合得很好。

通常,在每个班级的顶部,您应该拥有:

private static final Logger LOGGER = Logger.getLogger( ClassName.class.getName() );

然后,您可以使用Logger类的各种工具。


对在执行流的顶层调试的任何内容使用 Level.FINE

LOGGER.log( Level.FINE, "processing {0} entries in loop", list.size() );

在循环内部使用 /,以及在调试基本流问题时可能并不总是需要查看太多细节的地方:Level.FINERLevel.FINEST

LOGGER.log( Level.FINER, "processing[{0}]: {1}", new Object[]{ i, list.get(i) } );

使用日志记录工具的参数化版本来防止生成大量 GC 必须跟上的字符串串联垃圾。 由于以上很便宜,通常就堆栈分配。Object[]


使用异常处理时,始终记录完整的异常详细信息:

try {
    ...something that can throw an ignorable exception
} catch( Exception ex ) {
    LOGGER.log( Level.SEVERE, ex.toString(), ex );
}

我总是在这里作为消息传递,因为当我在日志文件中用“”代替“”时,我也可以看到消息。否则,它将位于堆栈转储生成的下一行输出上,并且您必须具有更高级的正则表达式来匹配该行,这通常会使您获得比您需要查看的更多的输出。ex.toString()grep -nException


答案 2

应该像这样声明记录器:

private final static Logger LOGGER = Logger.getLogger(MyClass.class.getName());

因此,如果您重构类名,则会遵循该类名。

我写了一篇关于java记录器的文章,在这里举例说明。


推荐