Hibernate 4 Wildfly 8日志记录无法正常工作

时间:2014-02-23 17:18:21

标签: slf4j logback hibernate-4.x wildfly jpa-2.1

如何让hibernate 4通过logback登录?我有一个战斗部署到wildfly 8 final,我正在使用slf4j和logback。日志设置在应用程序中100%正常工作,控制台appender和文件追加器都按预期工作。

以下是我为slf4j + logback工作所做的工作:

使用WEB-INF中的jboss-deployment-structure.xml排除日志记录子系统:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

在pom中包含slf4j和logback依赖项:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.6</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.1</version>
</dependency>

使用org.slf4j.Logger

登录应用程序

为logback.xml添加了3个记录器:

<logger name="my.package" level="TRACE"/>
<logger name="org.hibernate.type" level="ALL" />
<logger name="org.hibernate" level="TRACE" />

我没有在日志中看到任何与hibernate相关的内容。

我唯一一次从hibernate看到的是我添加到persistence.xml的时候:

<properties>
    <property name="hibernate.show_sql" value="true"/>
    <property name="hibernate.format_sql" value="true"/>
</properties>

但即使我的root logger设置为trace,它也会记录到服务器日志和控制台而不是我的logback appender。 。

logback ViewStatusMessagesServlet看起来很健康,并显示已注册的hibernate记录器: 2014-02-23 19:02:37 INFO LoggerAction将记录器[org.hibernate.type]设置为ALL

2014-02-23 19:02:37 INFO LoggerAction将记录器[org.hibernate]的级别设置为TRACE

我还可以使用在persistence.xml中注册的hibernate.ejb.interceptor来记录准备好的语句。不幸的是,这也没有提供任何获取查询参数的方法

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

由于Hibernate不是部署的一部分,并且是服务器的一部分,因此无法在部署中使用logback配置。 Hibernate将始终使用服务器日志记录配置。通常,这是在日志记录子系统中,但如果删除则由配置目录中的logging.properties文件控制。

有可能将服务器(至少绝对不是独立的域)配置为使用logback。我没有尝试过,这需要一些工作。您必须确保JBoss模块在启动时不会加载jboss-logmanager模块,并确保加载了logback。这可能也可能不起作用:)如果你这样做虽然你将失去任何管理功能来配置日志记录,例如打开调试日志记录。