推荐在Java、Hibernate和Spring中使用的日志记录器是什么?

7

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


Java中的日志记录有什么问题? - Jherico
也许...这个问题与Hibernate和Spring有关。 - Jason S
唉,只有一个答案提到了在具有与Spring和Hibernate特定相关性的方法中使用日志记录。无论如何,真正的答案是“任何日志记录实现都可以做你想要的事情,因为大多数库(如Spring或Hibernate)都是日志记录实现无关的”。 - Jherico
6个回答

13

当使用各种框架构建应用程序时,通常需要包装现有的记录器,无论是log4j还是JUL或JULI等。这个任务的标准应用是Java简单日志门面(SLF4J)。即使您的应用程序现在不需要SLF4J,将来可能需要添加一个需要它的库,而它是长期运行中仅需一个配置文件的最佳希望。

考虑到这一点,您应该坚持使用SLF4J支持的日志记录包,但通常归结为java.util.logging(JUL)或Apache的log4j。这已经成为了一直争议的话题,你可以找到许多对于双方的不同意见。

就我个人而言,我认为Java的日志记录处于这种境地是不幸的,我会使用任何能够在情况下给我带来最少痛苦的东西。


7

log4j 是我使用的标准记录器。您可以按包配置日志级别和日志文件,因此Hibernate、Spring和您的代码都可以分别写入自己的日志文件。


5

选择log4j从未有人被解雇。

还要看看slf4j。


4
Hibernate已经依赖于SLF4J。除非我弄错了,Spring的当前版本依赖于commons-logging,但下一个版本也将使用SLF4J。无论如何,您可以通过SLF4J(请参见jcl-over-slf4j.jar部分)整合所有日志记录。完成此操作后,您可以选择任何java.util.logging、log4j或logback作为底层日志记录框架。

3
我使用Apache Commons Logging API,并配合log4j配置文件(该配置文件简单易懂,有很多实例可供参考)。
我更喜欢使用commons logging 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

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接