【发布时间】:2015-02-18 11:03:23
【问题描述】:
我在 Wildfly 8.1 中定义了 a,因为我需要从 Hibernate 4.3.6 记录 SQL 语句。
这里是相关的standalone.xml部分:
<logging-profiles>
<logging-profile name="myprofile">
<console-handler name="CONSOLE">
<level name="INFO"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<custom-handler name="DB" class="it.x.y.jbosseapsqllogger.Oracle10SqlLogger" module="it.x.y.jbosseapsqllogger">
<level name="DEBUG"/>
<properties>
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xx"/>
<property name="username" value="xx"/>
<property name="password" value="xx"/>
</properties>
</custom-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="org.hibernate.type.descriptor.sql.BasicBinder" use-parent-handlers="false">
<level name="TRACE"/>
<handlers>
<handler name="DB"/>
<handler name="FILE"/>
</handlers>
</logger>
<logger category="org.hibernate.SQL" use-parent-handlers="false">
<level name="DEBUG"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</logging-profile>
</logging-profiles>
我从 org.hibernate.type.descriptor.sql.BasicBinder 类别中正确获取了绑定参数,但看不到 SQL 语句本身;这告诉我我正确地引用了来自 MANIFEST.MF 的配置文件:
Logging-Profile: myprofile
请注意,如果我将 org.hibernate.type.descriptor.sql.BasicBinder 和 org.hibernate.SQL 记录器从日志记录配置文件移到主要部分,一切都会按预期工作(当然对于每个部署的应用程序) ,这是我需要避免的)。
我尝试调试 Hibernate 和 Wildfly 日志记录子系统,但收效甚微。 我注意到的是,org.hibernate.SQL 不是一个类,而是 SqlStatementLogger.java 中的一个硬编码类别:
public class SqlStatementLogger {
private static final Logger LOG = CoreLogging.logger( "org.hibernate.SQL" );
private boolean logToStdout;
private boolean format;
[...]
有什么想法吗?非常感谢
【问题讨论】:
标签: hibernate logging wildfly wildfly-8