【问题标题】:Hibernate 4 Wildfly 8 logging not workingHibernate 4 Wildfly 8日志记录不起作用
【发布时间】:2014-02-23 17:18:20
【问题描述】:

如何让 hibernate 4 通过 logback 登录?我将一场战争部署到了wildfly 8 final,并且我正在使用带有logback的slf4j。日志记录设置在应用程序中 100% 工作,控制台附加程序和文件附加程序都按预期工作。

这是我为 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 中看到任何东西的唯一一次是当我添加到我的 persistence.xml 时:

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

但即使我的根记录器设置为 trace ,它也会记录到服务器日志和控制台而不是我的 logback 附加程序。 . .

logback ViewStatusMessagesServlet 看起来很健康,并显示了已注册的休眠记录器: 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 记录准备好的语句。不幸的是,这也没有提供任何获取查询参数的方法

谁能帮帮我?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我最终将记录器添加到配置目录中的standalone-full.xml 文件中(注意我正在为dev 运行独立的完整配置文件),由于此日志对所有应用程序都处于休眠状态,因此不是100% 满意,但现在还可以。 . .
    • 我尝试设置系统属性 org.jboss.logging.provider=slf4j,如下所述:docs.jboss.org/hibernate/orm/4.3/topical/html/logging/…,我得到 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory。将 Hibernate 消息记录到我自己的文件中应该没有那么难吧?
    • 您是否使用 logback 作为日志管理器?该错误看起来好像 slf4j 不在您的类路径中。
    猜你喜欢
    • 2014-12-03
    • 2015-01-21
    • 2016-05-26
    • 2021-11-19
    • 2015-02-18
    • 2018-08-24
    • 2011-12-27
    • 2013-04-27
    • 1970-01-01
    相关资源
    最近更新 更多