我的Web应用程序使用的是Java,Hibernate的JPA实现(EntityManager)和Spring。我的记录器选择是什么?你会推荐什么?理想情况下,配置很简单(一个配置文件用于Hibernate,Spring和我的代码)。
答案 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应用程序(和独立应用程序)来说是不必要的,也是一个糟糕的选择。关于原因的一些好文章: