推荐用于Java,Hibernate和Spring的记录器

时间:2009-06-02 18:36:13

标签: java hibernate spring logging jpa

我的Web应用程序使用的是Java,Hibernate的JPA实现(EntityManager)和Spring。我的记录器选择是什么?你会推荐什么?理想情况下,配置很简单(一个配置文件用于Hibernate,Spring和我的代码)。

6 个答案:

答案 0 :(得分:13)

当从各种框架构建应用程序时,您经常需要包装现有的记录器,无论是log4j还是JUL或JULI等等。标准申请是Simple Logging Facade for Java (SLF4J)。即使您的应用程序现在不需要SLF4J,您可能以后想要添加一个需要它的库,从长远来看,这是您最好的配置文件。

考虑到这一点,你应该坚持使用SLF4J支持的日志包,但通常它归结为java.util.logging(JUL)或Apache的log4j。这已经是subject for debate一段时间了,你可以在双方找到很多意见。

就我个人而言,我认为Java日志记录位于this situation是不幸的,而且我会使用任何让我对情况最不痛苦的事情。

答案 1 :(得分:7)

log4j是我使用的标准记录器。您可以按包配置日志记录级别和日志文件,这样Hibernate,Spring和您的代码都可以转到自己的日志文件。

答案 2 :(得分:5)

没有人因选择log4j而被解雇。

另请查看slf4j。

答案 3 :(得分:4)

Hibernate已经依赖于SLF4J。除非我弄错了,Spring的当前版本依赖于commons-logging,但下一个版本也将使用SLF4J。无论如何,你可以consolidate all logging through SLF4J(参见jcl-over-slf4j.jar部分)。完成后,您可以选择java.util.logging,log4j或logback中的任何一个作为基础日志框架。

答案 4 :(得分:3)

我使用Apache Commons Logging api和一个log4j配置文件(log4j配置文件很简单,新手很容易理解并且有很多例子可供使用。

我更喜欢使用commons日志记录API,因为它对其配置文件不可知。它可以通过文件格式配置为任意数量的流行日志包。

这是一个简单的log4j设置,它将打印出你自己的软件包的调试信息,spring和hibernate的INFO级别,以及其他所有的WARN:

# Global logging configuration
log4j.rootLogger=WARN, stdout
log4j.category.org.mydomain.org=DEBUG
log4j.category.org.hibernate=INFO
log4j.category.org.springframework=INFO


# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %c - %m%n

答案 5 :(得分:1)

一般来说,Commons Logging对于Web应用程序(和独立应用程序)来说是不必要的,也是一个糟糕的选择。关于原因的一些好文章:

Think again before adopting the commons-logging API

Commons Logging was my fault