首页 > 代码库 > [JBoss] - 在Jboss 7.1 AS中打印hibernate的SQL方法

[JBoss] - 在Jboss 7.1 AS中打印hibernate的SQL方法

因为JBoss使用的是log4j,JBoss的系统日志级别默认是INFO。而Hibernate或IBatis要打印SQL,级别为DEBUG,所以,程序设置了log4j级别为DEBUG会被JBoss系统设置的INFO给覆盖了。

要解决这个问题,需要手动的配置JBoss的Log4j日志级别:

 

1、打开文件:jboss-as-7.1.1.Final\standalone\configuration\standalone.xml

2、找到这个节点:

<subsystem xmlns="urn:jboss:domain:logging:1.1">::</subsystem>

3、把console-handler的<level name="INFO"/>

4、在下面的一堆logger中,加入这几个:

            <logger category="org.hibernate.SQL">                <level name="DEBUG"/>            </logger>            <logger category="org.hibernate.ps.PreparedStatementCache">                <level name="DEBUG"/>            </logger>            <logger category="org.hibernate.type">                <level name="TRACE"/>            </logger>

保存退出即可。

 


 

这是<subsystem />节点的所有内容:

        <subsystem xmlns="urn:jboss:domain:logging:1.1">            <console-handler name="CONSOLE">                <filter>                    <not>                        <match pattern="JBAS011054|JBAS011006"/>                    </not>                </filter>                <formatter>                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>                </formatter>            </console-handler>            <periodic-rotating-file-handler name="FILE">                <formatter>                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>                </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="com.arjuna">                <level name="WARN"/>            </logger>            <logger category="org.apache.tomcat.util.modeler">                <level name="WARN"/>            </logger>            <logger category="sun.rmi">                <level name="WARN"/>            </logger>            <logger category="jacorb">                <level name="WARN"/>            </logger>            <logger category="jacorb.config">                <level name="ERROR"/>            </logger>            <logger category="org.hibernate.SQL">                <level name="DEBUG"/>            </logger>            <logger category="org.hibernate.ps.PreparedStatementCache">                <level name="DEBUG"/>            </logger>            <logger category="org.hibernate.type">                <level name="TRACE"/>            </logger>            <root-logger>                <level name="INFO"/>                <handlers>                    <handler name="CONSOLE"/>                    <handler name="FILE"/>                </handlers>            </root-logger>        </subsystem>

在console-handler中有一个:<match pattern="JBAS011054|JBAS011006"/>

意思是过滤掉一些JBoss的错误提示信息,不然在Jboss启动时会见到有些”无聊“异常信息,碍眼。

 


 

 

log4j的配置信息:

########################################################## Log4j设置级别及需要输出哪种日志##########################################################log4j.rootCategory=INFO, stdout, filelog4j.rootLogger=INFO, stdout, file########################################################## 开启需要输出的日志级别到指定模块#########################################################log4j.logger.org.springframework=ERRORlog4j.logger.org.hibernate=INFOlog4j.logger.org.apache.struts2=ERRORlog4j.logger.org.hibernate.SQL=DEBUGlog4j.logger.org.hibernate.ps.PreparedStatementCache=WARNlog4j.logger.org.hibernate.type=TRACE########################################################## 控制台输出#########################################################log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.Outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %m%nlog4j.appender.stdout.Threshold=TRACE########################################################## 文件输出#########################################################log4j.appender.file=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.file.File=${webApp.root}/WEB-INF/log/loginfo.loglog4j.appender.file.encoding=UTF-8log4j.appender.file.DatePattern=‘.‘yyyy-MM-dd‘.log‘log4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %m%nlog4j.appender.file.BufferedIO=false#log4j.appender.file.BufferSize=1024

 


 

最终输出结果:

[JBoss] - 在Jboss 7.1 AS中打印hibernate的SQL方法