java - util - org.slf4j.logger使用




使用java.util.logging的好例子 (4)

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

有没有我能用logging做什么的例子? 我如何在自己的程序中使用日志记录?


SLF4J是比Apache Commons Logging(ACL)更好的日志外观。 它与其他日志框架建立了桥梁,通过SLF4J直接调用ACL,Log4J或Java Util日志记录,以便您可以根据需要将所有输出定向到一个日志文件,只需一个日志配置文件。 为什么你的应用程序会使用多个日志框架? 由于您使用的第三方库,特别是较旧的库,可能会这样做。

SLF4J支持各种日志记录实现。 它可以将所有内容输出到标准输出,使用Log4J或Logback(推荐使用Log4J)。

http://www.slf4j.org/

http://logback.qos.ch/


java.util.logging让你不必再携带一个jar文件来处理你的应用程序,并且它可以很好地与一个好的Formatter配合使用。

一般来说, 在每个班的顶部 ,你应该有:

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.FINER / Level.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()作为消息,因为然后当我在日志文件中的“ Exception ”中“ grep -n ”时,我也可以看到消息。 否则,它将位于堆栈转储生成的下一行输出中,并且您必须具有更高级的RegEx才能与该行匹配,这往往会让您获得比您需要查看更多的输出。


我会亲自使用minlog 。 这非常简单,因为日志记录类是几百行代码。


我建议你使用Apache的公共日志记录工具。 它具有高度的可扩展性,并支持不同记录器的单独日志文件。 看到这里





java.util.logging