Hibernate在JBoss 7.1的Spring应用程序中进行日志记录 [英] Hibernate logging in Spring application on JBoss 7.1

查看:99
本文介绍了Hibernate在JBoss 7.1的Spring应用程序中进行日志记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我试图使用Log4j来记录jdbc SQL语句参数,但它不起作用。看起来好像我的log4j.properties配置文件没有做任何改变。这里是项目配置:

我使用Maven,Eclipse和log4j.properties文件位于项目源文件夹的顶部(就像我在类路径中理解的那样) 。



pom.xml

 < project xmlns =http ://maven.apache.org/POM/4.0.0xmlns:xsi =http://www.w3.org/2001/XMLSchema-instancexsi:schemaLocation =http://maven.apache.org /POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"> 
< modelVersion> 4.0.0< / modelVersion>
< groupId> TestProject< / groupId>
< artifactId> TestProject< / artifactId>
< version> 0.0.1-SNAPSHOT< / version>
<属性>
< org.hibernate.version> 3.6.0.Final< /org.hibernate.version>
< org.springframework.version> 3.1.2.RELEASE< /org.springframework.version>
< org.apache.tiles.version> 2.2.2< /org.apache.tiles.version>
< slf4j-log4j12.version> 1.7.0< /slf4j-log4j12.version>
< / properties>
<依赖关系>
< dependency>
< groupId> org.springframework< / groupId>
< artifactId> spring-context< / artifactId>
< version> $ {org.springframework.version}< / version>
< scope>运行时< / scope>
<排除项>
<排除>
< artifactId> commons-logging< / artifactId>
< groupId> commons-logging< / groupId>
< /排除>
< /排除>
< /依赖关系>
< dependency>
< groupId> org.hibernate< / groupId>
< artifactId> hibernate-core< / artifactId>
< version> $ {org.hibernate.version}< / version>
< /依赖关系>
< dependency>
< groupId> org.springframework< / groupId>
< artifactId> spring-orm< / artifactId>
< version> $ {org.springframework.version}< / version>
< /依赖关系>
< dependency>
< groupId> org.hsqldb< / groupId>
< artifactId> hsqldb< / artifactId>
< version> 2.2.8< / version>
< /依赖关系>
< dependency>
< groupId> org.javassist< / groupId>
< artifactId> javassist< / artifactId>
< version> 3.16.1-GA< / version>
< /依赖关系>
< dependency>
< groupId> org.springframework< / groupId>
< artifactId> spring-webmvc< / artifactId>
< version> $ {org.springframework.version}< / version>
< /依赖关系>
< dependency>
< groupId> org.apache.tiles< / groupId>
< artifactId> tiles-extras< / artifactId>
< version> $ {org.apache.tiles.version}< / version>
< /依赖关系>
< dependency>
< groupId> org.springframework.security< / groupId>
< artifactId> spring-security-web< / artifactId>
< version> $ {org.springframework.version}< / version>
< /依赖关系>
< dependency>
< groupId> org.springframework.security< / groupId>
< artifactId> spring-security-config< / artifactId>
< version> $ {org.springframework.version}< / version>
< /依赖关系>
< dependency>
< groupId> cglib< / groupId>
< artifactId> cglib< / artifactId>
< version> 2.2< / version>
< /依赖关系>
< dependency>
< groupId> org.slf4j< / groupId>
< artifactId> slf4j-api< / artifactId>
< version> $ {slf4j-log4j12.version}< / version>
< scope>运行时< / scope>
< /依赖关系>
< dependency>
< groupId> org.slf4j< / groupId>
< artifactId> slf4j-log4j12< / artifactId>
< version> $ {slf4j-log4j12.version}< / version>
< scope>运行时< / scope>
< /依赖关系>
< dependency>
< groupId> org.slf4j< / groupId>
< artifactId> jcl-over-slf4j< / artifactId>
< version> $ {slf4j-log4j12.version}< / version>
< scope>运行时< / scope>
< /依赖关系>
< dependency>
< groupId> log4j< / groupId>
< artifactId> log4j< / artifactId>
< version> 1.2.17< / version>
< /依赖关系>
< /依赖关系>
< / project>

log4j.properties

  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 {ABSOLUTE}%5p%c {1}:%L - %m%n

log4j.rootLogger = ERROR ,stdout

log4j.logger.main.mvc.model.hibernate = DEBUG

log4j.logger.org.hibernate = INFO
log4j.logger.org。 hibernate.SQL = DEBUG
log4j.logger.org.hibernate.type = TRACE


解决方案

好的。所以我最终得到了它的工作!



所有这些麻烦都是由JBoss AS 7.1引起的。



如何在JBoss AS 7.1上运行的Spring MVC应用程序上设置slf4j + log4j日志:必须将其关闭 - 将 jboss-deployment-structure.xml 添加到 META-INF / 目录中

  • 必须将这些库放在classpath中: log4j.jar slf4j-api.jar slf4j-log4j12.jar jcl-over- sfl4j.jar 即可。必须从类路径中排除Spring的默认 common-logging.jar

  • 必须具有 log4j.properties log4j.xml 文件。

  • 这些文件让我可以控制日志,并实现了我的目标 - 记录Hibernate SQL语句参数。

    jboss-deployment-structure.xml


     < ;?xml version =1.0encoding =UTF-8?> 
    < jboss-deployment-structure>
    < deployment>
    <排除项>
    < module name =org.apache.log4j/>
    < module name =org.slf4j/>
    < module name =org.slf4j.impl/>
    < /排除>
    < / deployment>
    < / jboss-deployment-structure>

    pom.xml

     < project xmlns =http://maven.apache.org/POM/4.0.0xmlns:xsi =http://www.w3.org/2001/XMLSchema-instancexsi :schemaLocation =http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"> 
    < modelVersion> 4.0.0< / modelVersion>
    < groupId> bladositto< / groupId>
    < artifactId> TestLogging< / artifactId>
    < version> 0.0.1-SNAPSHOT< / version>
    <属性>
    < org.hibernate.version> 3.6.0.Final< /org.hibernate.version>
    < org.springframework.version> 3.1.2.RELEASE< /org.springframework.version>
    < org.apache.tiles.version> 2.2.2< /org.apache.tiles.version>
    < slf4j-log4j12.version> 1.7.0< /slf4j-log4j12.version>
    < / properties>
    <依赖关系>
    < dependency>
    < groupId> org.springframework< / groupId>
    < artifactId> spring-context< / artifactId>
    < version> $ {org.springframework.version}< / version>
    < scope>运行时< / scope>
    <排除项>
    <排除>
    < artifactId> commons-logging< / artifactId>
    < groupId> commons-logging< / groupId>
    < /排除>
    < /排除>
    < /依赖关系>
    < dependency>
    < groupId> org.hibernate< / groupId>
    < artifactId> hibernate-core< / artifactId>
    < version> $ {org.hibernate.version}< / version>
    < /依赖关系>
    < dependency>
    < groupId> org.springframework< / groupId>
    < artifactId> spring-orm< / artifactId>
    < version> $ {org.springframework.version}< / version>
    < /依赖关系>
    < dependency>
    < groupId> org.hsqldb< / groupId>
    < artifactId> hsqldb< / artifactId>
    < version> 2.2.8< / version>
    < /依赖关系>
    < dependency>
    < groupId> org.javassist< / groupId>
    < artifactId> javassist< / artifactId>
    < version> 3.16.1-GA< / version>
    < /依赖关系>
    < dependency>
    < groupId> org.springframework< / groupId>
    < artifactId> spring-webmvc< / artifactId>
    < version> $ {org.springframework.version}< / version>
    < /依赖关系>
    < dependency>
    < groupId> org.apache.tiles< / groupId>
    < artifactId> tiles-extras< / artifactId>
    < version> $ {org.apache.tiles.version}< / version>
    < /依赖关系>
    < dependency>
    < groupId> org.springframework.security< / groupId>
    < artifactId> spring-security-web< / artifactId>
    < version> $ {org.springframework.version}< / version>
    < /依赖关系>
    < dependency>
    < groupId> org.springframework.security< / groupId>
    < artifactId> spring-security-config< / artifactId>
    < version> $ {org.springframework.version}< / version>
    < /依赖关系>
    < dependency>
    < groupId> cglib< / groupId>
    < artifactId> cglib< / artifactId>
    < version> 2.2< / version>
    < /依赖关系>
    < dependency>
    < groupId> org.slf4j< / groupId>
    < artifactId> slf4j-api< / artifactId>
    < version> $ {slf4j-log4j12.version}< / version>
    < scope>运行时< / scope>
    < /依赖关系>
    < dependency>
    < groupId> org.slf4j< / groupId>
    < artifactId> slf4j-log4j12< / artifactId>
    < version> $ {slf4j-log4j12.version}< / version>
    < scope>运行时< / scope>
    < /依赖关系>
    < dependency>
    < groupId> org.slf4j< / groupId>
    < artifactId> jcl-over-slf4j< / artifactId>
    < version> $ {slf4j-log4j12.version}< / version>
    < scope>运行时< / scope>
    < /依赖关系>
    < dependency>
    < groupId> log4j< / groupId>
    < artifactId> log4j< / artifactId>
    < version> 1.2.17< / version>
    < /依赖关系>
    < /依赖关系>
    < / project>

    log4j.properties

      log4j.rootLogger =信息,A1,R 

    log4j.appender.A1 = org.apache.log4j.ConsoleAppender
    log4j.appender.A1.Target = System。 out
    log4j.appender.A1.layout = org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern =%d {ABSOLUTE}%5p%c {1}:%L - %m%n

    log4j.appender.R = org.apache.log4j.RollingFileAppender
    log4j.appender.R.File = example.log
    log4j.appender.R。 MaxFileSize = 100KB
    log4j.appender.R.MaxBackupIndex = 1
    log4j.appender.R.layout = org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern =% p%t%c - %m%n

    log4j.logger.org.hibernate.SQL = DEBUG
    log4j.logger.org.hibernate.type = TRACE


    I have Spring MVC application integrated with Hibernate.

    I'm trying to log jdbc SQL statement parameters using Log4j but it doesn't work. It seems like my log4j.properties configuration file does not make any changes. Here is project config:

    I'm using Maven, Eclipse and log4j.properties file is at the top of the projects source folder (so as I understand in the classpath).

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>TestProject</groupId>
      <artifactId>TestProject</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <properties>
        <org.hibernate.version>3.6.0.Final</org.hibernate.version>
        <org.springframework.version>3.1.2.RELEASE</org.springframework.version>
        <org.apache.tiles.version>2.2.2</org.apache.tiles.version>
        <slf4j-log4j12.version>1.7.0</slf4j-log4j12.version>
      </properties>
      <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework.version}</version>
            <scope>runtime</scope>
            <exclusions>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${org.hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>2.2.8</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.16.1-GA</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-extras</artifactId>
            <version>${org.apache.tiles.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j-log4j12.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j-log4j12.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${slf4j-log4j12.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
      </dependencies>
    </project>
    

    log4j.properties

    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{ABSOLUTE} %5p %c{1}:%L - %m%n
    
    log4j.rootLogger=ERROR, stdout
    
    log4j.logger.main.mvc.model.hibernate=DEBUG
    
    log4j.logger.org.hibernate=INFO
    log4j.logger.org.hibernate.SQL=DEBUG
    log4j.logger.org.hibernate.type=TRACE
    

    解决方案

    OK. So I finally got it working!

    All these troubles were caused by JBoss AS 7.1.

    So here is how to set up slf4j+log4j logging on Spring MVC application that is run on JBoss AS 7.1:

    1. There are built-in JBoss modules that has to be turneda off so - add jboss-deployment-structure.xml to your META-INF/ directory
    2. You have to have these libraries in classpath: log4j.jar, slf4j-api.jar, slf4j-log4j12.jar, jcl-over-sfl4j.jar. Spring's default common-logging.jar has to be excluded from classpath.
    3. You have to have log4j.properties or log4j.xml file in classpath.

    These files gave me control over logs and I achieved my goal - logging Hibernate SQL statement parameters.

    jboss-deployment-structure.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
        <deployment>
            <exclusions>
                <module name="org.apache.log4j" />
                <module name="org.slf4j" />
                <module name="org.slf4j.impl" />
            </exclusions>
        </deployment>
    </jboss-deployment-structure> 
    

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>bladositto</groupId>
      <artifactId>TestLogging</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <properties>
        <org.hibernate.version>3.6.0.Final</org.hibernate.version>
        <org.springframework.version>3.1.2.RELEASE</org.springframework.version>
        <org.apache.tiles.version>2.2.2</org.apache.tiles.version>
        <slf4j-log4j12.version>1.7.0</slf4j-log4j12.version>
      </properties>
      <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework.version}</version>
            <scope>runtime</scope>
            <exclusions>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${org.hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>2.2.8</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.16.1-GA</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-extras</artifactId>
            <version>${org.apache.tiles.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j-log4j12.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j-log4j12.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${slf4j-log4j12.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
      </dependencies>
    </project>
    

    log4j.properties

    log4j.rootLogger=INFO, A1, R
    
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.Target=System.out
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=example.log
    log4j.appender.R.MaxFileSize=100KB
    log4j.appender.R.MaxBackupIndex=1
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
    
    log4j.logger.org.hibernate.SQL=DEBUG
    log4j.logger.org.hibernate.type=TRACE
    

    这篇关于Hibernate在JBoss 7.1的Spring应用程序中进行日志记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆