本文介绍了Log4j正在运行,但hibernate日志不会创建到hibernate.log文件中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的log4j正在运行,但是hibernate日志并没有写入我的hibernate.log文件中。



我使用jobss 7.1.1 final所以



1)我在jobss 7.1.1 final
中有crated模块,所以我的module.xml如下所示

 <?xml version =1.0encoding =UTF-8?> 
< module xmlns =urn:jboss:module:1.1name =com.fourthdti.myproject>
<资源>
< resource-root path =log4j-1.2.16.jar/>
< /资源>
<依赖关系>
< module name =javax.api/>
< /依赖关系>
< / module>



2)jboss-deployment-structure.xml如下所示

 <?xml version =1.0encoding =UTF-8?> 
< jboss-deployment-structure>
< ear-subdeployments-isolated> false< / ear-subdeployments-isolated>
< deployment name =eSociety-ear.ear>
<依赖关系>
< module name =com.fourthdti.myprojectexport =true/>
< /依赖关系>
<排除项>
< module name =org.apache.commons.logging/>
< module name =org.apache.log4j/>
< module name =org.jboss.logging/>
< module name =org.jboss.logging.jul-to-slf4j-stub/>
< module name =org.jboss.logmanager/>
< module name =org.jboss.logmanager.log4j/>
< module name =org.slf4j/>
< module name =org.slf4j.impl/>
< module name =org.antlr/>
< module name =org.hibernate。*/>
< /排除>
< / deployment>

< sub-deployment name =eSociety-web-0.0.1-SNAPSHOT.war>
<排除项>
< module name =org.apache.commons.logging/>
< module name =org.apache.log4j/>
< module name =org.jboss.logging/>
< module name =org.jboss.logging.jul-to-slf4j-stub/>
< module name =org.jboss.logmanager/>
< module name =org.jboss.logmanager.log4j/>
< module name =org.slf4j/>
< module name =org.slf4j.impl/>
< module name =org.antlr/>
< module name =org.hibernate。*/>
< /排除>
< / sub-deployment>

< sub-deployment name =eSociety-ejb-0.0.1-SNAPSHOT.jar>
<排除项>
< module name =org.apache.commons.logging/>
< module name =org.apache.log4j/>
< module name =org.jboss.logging/>
< module name =org.jboss.logging.jul-to-slf4j-stub/>
< module name =org.jboss.logmanager/>
< module name =org.jboss.logmanager.log4j/>
< module name =org.slf4j/>
< module name =org.slf4j.impl/>
< module name =org.antlr/>
< module name =org.hibernate。*/>
< /排除>
< / sub-deployment>
< / jboss-deployment-structure>

3)我的log4j.xml(/WEB_INF/log4j.xml)如下

 <?xml version =1.0encoding =UTF-8?> 
<!DOCTYPE log4j:configuration SYSTEMlog4j.dtd>

< log4j:configuration xmlns:log4j =http://jakarta.apache.org/log4j/debug =false>

< appender name =CONSOLEclass =org.apache.log4j.ConsoleAppender>
< layout class =org.apache.log4j.PatternLayout>
< param name =ConversionPatternvalue =[%d {dd / MM / yy hh:mm:ss:sss z}]%5p%c {2}:%m%n/>
< / layout>
< / appender>

< appender name =ASYNCclass =org.apache.log4j.AsyncAppender>
< appender-ref ref =CONSOLE/>
< appender-ref ref =FILE/>
< / appender>

< appender name =allAppenderclass =org.apache.log4j.RollingFileAppender>
< param name =filevalue =c:/logs/eSociety_All.log/>
< param name =MaxFileSizevalue =1MB/>
< param name =MaxBackupIndexvalue =2/>
< layout class =org.apache.log4j.PatternLayout>
< param name =ConversionPatternvalue =%d {ISO8601} [%d {z}] - %-5p [%t]:[%C]%m%n/>
< / layout>
< / appender>

< appender name =hibernateAppenderclass =org.apache.log4j.RollingFileAppender>
< param name =filevalue =c:/logs/eSociety_Hibernate.log/>
< param name =MaxFileSizevalue =1MB/>
< param name =MaxBackupIndexvalue =2/>
< param name =Appendvalue =true/>
< layout class =org.apache.log4j.PatternLayout>
< param name =ConversionPatternvalue =%d {ISO8601} [%d {z}] - %-5p [%t]:[%C]%m%n/>
< / layout>
< filter class =org.apache.log4j.varia.StringMatchFilter>
< param name =StringToMatchvalue =bind/>
< param name =AcceptOnMatchvalue =true/>
< / filter>
< filter class =org.apache.log4j.varia.StringMatchFilter>
< param name =StringToMatchvalue =select/>
< param name =AcceptOnMatchvalue =true/>
< / filter>
< filter class =org.apache.log4j.varia.DenyAllFilter/>
< / appender>

< appender name =springAppenderclass =org.apache.log4j.RollingFileAppender>
< param name =filevalue =c:/logs/eSociety_Spring.log/>
< param name =MaxFileSizevalue =1MB/>
< param name =MaxBackupIndexvalue =2/>
< layout class =org.apache.log4j.PatternLayout>
< param name =ConversionPatternvalue =%d {ISO8601} [%d {z}] - %-5p [%t]:[%C]%m%n/>
< / layout>
< / appender>

< category name =org.hibernate.type>
< priority value =TRACE/>
< / category>

< category name =org.hibernate.impl.SessionImpl>
< priority value =DEBUG>
< / priority>
< / category>

< category name =org.hibernate.engine.QueryParameters>
< priority value =DEBUG>
< / priority>
< / category>

< logger name =org.hibernate.type>
< level value =TRACE/>
< appender-ref ref =hibernateAppender/>
< / logger>

< logger name =org.hibernate.SQL>
< level value =TRACE/>
< appender-ref ref =hibernateAppender/>
< / logger>

< logger name =org.springframeworkadditivity =false>
< level value =debug/>
< appender-ref ref =springAppender/>
< / logger>

< root>
< priority value =debug/>
< appender-ref ref =allAppender/>
< / root>
< / log4j:配置>

4)我在web.xml中添加了日志记录监听程序

 <! - 日志记录监听器 - > 
< listener>
< listener-class> org.springframework.web.util.Log4jConfigListener< / listener-class>
< / listener>
< context-param>
< param-name> log4jConfigLocation< / param-name>
< param-value> /WEB-INF/log4j.xml< / param-value>
< / context-param>

5)我把下面的jar文件放在类路径中。

  i)log4j-1.2.16.jar 
ii)slf4j-api-1.6.4.jar
iii)slf4j-log4j12-1.5 .10.jar

请告诉我我需要做什么的额外配置。



所有日志文件正在创建,所有日志都在创建,除了hibernate日志文件在hibernate.log中。

解决方案

你有没有像hibernate.cfg.xml文件那样的额外hibernate配置?如果属性show sql设置为true,则可以将hibernate日志重定向到控制台。



如果不是这样,下面是我使用的一个简单的log4j配置示例: / p>

 #全局变量
log.dir = / Users / XXX / Log
datestamp = yyyy-MM- dd / HH:mm:ss.SSS / zzz
date.pattern ='。'yyyy-MM-dd

#根目录设置
log4j.rootLogger =信息,文件,stdout
log4j.logger.org.hibernate = INFO
log4j.logger.org.hibernate.SQL = DEBUG
log4j.logger.org.hibernate.type = ALL

#File logger appender(每天午夜翻身)
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern = $ {date.pattern}
log4j.appender.file.File = $ {log.dir} /webapp.log
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file .layout.ConversionPattern =%d {$ {datestamp}} [%t]%-5p%c {1}:%L - %m%n

#Console记录器appender
log4j .appender.stdout = org.apache.log4j.Con soleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =% d {$ {datestamp}} [%t]%-5p%c {1}:%L - %m%n


My log4j is working but the hibernate log is not crating in to my hibernate.log file

I am using jobss 7.1.1 final so

1)I have crated module in jobss 7.1.1 finalso my module.xml is as follw

<?xml version="1.0" encoding="UTF-8"?>  
<module xmlns="urn:jboss:module:1.1" name="com.fourthdti.myproject">  
    <resources>  
        <resource-root path="log4j-1.2.16.jar"/>  
    </resources>  
    <dependencies>
        <module name="javax.api"/>
    </dependencies>  
</module>

2) jboss-deployment-structure.xml is as follw

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
    <deployment name="eSociety-ear.ear">
        <dependencies>
            <module name="com.fourthdti.myproject" export="true" />
        </dependencies>
        <exclusions>
            <module name="org.apache.commons.logging" />
            <module name="org.apache.log4j" />
            <module name="org.jboss.logging" />
            <module name="org.jboss.logging.jul-to-slf4j-stub" />
            <module name="org.jboss.logmanager" />
            <module name="org.jboss.logmanager.log4j" />
            <module name="org.slf4j" />
            <module name="org.slf4j.impl" />
            <module name="org.antlr"/>
            <module name="org.hibernate.*"/>
        </exclusions>
    </deployment>

    <sub-deployment name="eSociety-web-0.0.1-SNAPSHOT.war">
        <exclusions>
            <module name="org.apache.commons.logging" />
            <module name="org.apache.log4j" />
            <module name="org.jboss.logging" />
            <module name="org.jboss.logging.jul-to-slf4j-stub" />
            <module name="org.jboss.logmanager" />
            <module name="org.jboss.logmanager.log4j" />
            <module name="org.slf4j" />
            <module name="org.slf4j.impl" />
            <module name="org.antlr"/>
            <module name="org.hibernate.*"/>
        </exclusions>
    </sub-deployment>

    <sub-deployment name="eSociety-ejb-0.0.1-SNAPSHOT.jar">
        <exclusions>
            <module name="org.apache.commons.logging" />
            <module name="org.apache.log4j" />
            <module name="org.jboss.logging" />
            <module name="org.jboss.logging.jul-to-slf4j-stub" />
            <module name="org.jboss.logmanager" />
            <module name="org.jboss.logmanager.log4j" />
            <module name="org.slf4j" />
            <module name="org.slf4j.impl" />
            <module name="org.antlr"/>
            <module name="org.hibernate.*"/>
        </exclusions>
    </sub-deployment>
</jboss-deployment-structure>

3) my log4j.xml (/WEB_INF/log4j.xml) is as follow

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

        <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />
            </layout>
        </appender>

        <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </appender>

        <appender name="allAppender" class="org.apache.log4j.RollingFileAppender"> 
          <param name="file" value="c:/logs/eSociety_All.log"/>
          <param name="MaxFileSize" value="1MB"/>
          <param name="MaxBackupIndex" value="2"/>
          <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d{ISO8601} [%d{z}] - %-5p [%t]: [%C] %m%n"/> 
          </layout> 
        </appender>

        <appender name="hibernateAppender" class="org.apache.log4j.RollingFileAppender"> 
          <param name="file" value="c:/logs/eSociety_Hibernate.log"/>
          <param name="MaxFileSize" value="1MB"/>
          <param name="MaxBackupIndex" value="2"/>
          <param name="Append" value="true"/>
          <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d{ISO8601} [%d{z}] - %-5p [%t]: [%C] %m%n"/> 
          </layout> 
          <filter class="org.apache.log4j.varia.StringMatchFilter">
            <param name="StringToMatch" value="bind" />
            <param name="AcceptOnMatch" value="true" />
          </filter>
          <filter class="org.apache.log4j.varia.StringMatchFilter">
            <param name="StringToMatch" value="select" />
            <param name="AcceptOnMatch" value="true" />
          </filter>  
          <filter class="org.apache.log4j.varia.DenyAllFilter"/>
        </appender>

        <appender name="springAppender" class="org.apache.log4j.RollingFileAppender"> 
          <param name="file" value="c:/logs/eSociety_Spring.log"/>
          <param name="MaxFileSize" value="1MB"/>
          <param name="MaxBackupIndex" value="2"/>
          <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d{ISO8601} [%d{z}] - %-5p [%t]: [%C] %m%n"/> 
          </layout> 
        </appender>

        <category name="org.hibernate.type">
            <priority value="TRACE"/>
        </category>

        <!-- Log the actual Hibernate Query Language (HQL) expression -->  
         <category name="org.hibernate.impl.SessionImpl">  
         <priority value="DEBUG">  
         </priority>  
         </category>  

        <!-- Log the substitution parameters in the HQL expression -->  
         <category name="org.hibernate.engine.QueryParameters">  
         <priority value="DEBUG">  
         </priority>  
         </category>

        <logger name="org.hibernate.type">
            <level value="TRACE"/> 
            <appender-ref ref="hibernateAppender"/>
        </logger>

        <logger name="org.hibernate.SQL">
            <level value="TRACE"/> 
            <appender-ref ref="hibernateAppender"/>
        </logger>

        <logger name="org.springframework" additivity="false">
                <level value="debug"/>
                <appender-ref ref="springAppender" />
        </logger>

        <root> 
          <priority value ="debug" /> 
          <appender-ref ref="allAppender" /> 
        </root>
</log4j:configuration>

4) I added the logging listener in web.xml

<!-- Logging listener -->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.xml</param-value>
    </context-param>

5) I have putted following jar files in class path.

i) log4j-1.2.16.jar
ii) slf4j-api-1.6.4.jar
iii) slf4j-log4j12-1.5.10.jar

Please suggest me what is the additional configuration for the hibernate logging I have to do.

All log file is creating, all logs is creating except hibernate log in hibernate.log file.

解决方案

Do you have additional hibernate configuration like an hibernate.cfg.xml file ? If the property show sql is set to true, hibernate logs could be re directed to console.

If it's not, here is a simple example of log4j configuration i use :

#Global variables
log.dir=/Users/XXX/Log
datestamp=yyyy-MM-dd/HH:mm:ss.SSS/zzz
date.pattern='.'yyyy-MM-dd

#Root level settings
log4j.rootLogger=INFO, file, stdout
log4j.logger.org.hibernate=INFO
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=ALL

#File logger appender (roll over at midnight each day)
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=${date.pattern}
log4j.appender.file.File=${log.dir}/webapp.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} [%t] %-5p %c{1}:%L - %m%n

#Console logger appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{${datestamp}} [%t] %-5p %c{1}:%L - %m%n

这篇关于Log4j正在运行,但hibernate日志不会创建到hibernate.log文件中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 09:43