Hibernate在JBoss 7.1的Spring应用程序中进行日志记录 [英] Hibernate logging in Spring application on JBoss 7.1
问题描述
我试图使用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 / 目录中
这些文件让我可以控制日志,并实现了我的目标 - 记录Hibernate SQL语句参数。
< ;?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:
- There are built-in JBoss modules that has to be turneda off so - add jboss-deployment-structure.xml to your META-INF/ directory
- 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.
- 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屋!