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

Sph*_*ynx 5 logback slf4j hibernate-4.x wildfly jpa-2.1

如何让hibernate 4通过logback登录?我有一个战斗部署到wildfly 8 final,我正在使用slf4j和logback.日志设置在应用程序中100%工作,控制台appender和文件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>
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

使用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" />
Run Code Online (Sandbox Code Playgroud)

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

我从hibernate看到的任何东西都是我添加到persistence.xml的时候:

<properties>
    <property name="hibernate.show_sql" value="true"/>
    <property name="hibernate.format_sql" value="true"/>
</properties>
Run Code Online (Sandbox Code Playgroud)

但它会记录到服务器日志和控制台,而不是我的logback appender,即使我的根记录器设置为跟踪...

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

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

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

谁能帮我吗?

Jam*_*ins 6

因为Hibernate不是部署的一部分,而是服务器的一部分,所以它不能在部署中使用logback配置。Hibernate将始终使用服务器日志记录配置。通常,它在日志记录子系统中,但是如果将其删除,则由logging.properties配置目录中的文件控制。

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