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来记录准备好的语句.不幸的是,这也没有提供任何方法来获取查询参数
谁能帮我吗?
因为Hibernate不是部署的一部分,而是服务器的一部分,所以它不能在部署中使用logback配置。Hibernate将始终使用服务器日志记录配置。通常,它在日志记录子系统中,但是如果将其删除,则由logging.properties配置目录中的文件控制。
可能可以配置服务器(至少绝对不是域服务器)以使用logback。我没有尝试过,这需要一些工作。您必须确保启动时,JBoss模块不会加载jboss-logmanager模块,并且不会加载logback。同样,这可能会或可能不会起作用:)如果这样做,则将失去所有配置日志记录的管理功能,例如,打开调试日志记录。
| 归档时间: |
|
| 查看次数: |
4313 次 |
| 最近记录: |