Hibernate4配置log4j日志环境

本文指导如何在Hibernate项目中配置log4j,实现详细的日志输出,包括SQL语句、缓存活动、事务操作等信息,通过调整log4j.properties文件设置日志级别和输出目标。

        为了便于调试和查看Hibernate自动生成的SQL语句和详细信息,Hibernate4本身自带了slf4j-api-1.6.1日志JAR包,但是使用不太流行,现在是使用log4j来实现Hibernate的日志信息。

1、访问log4j官方网站http://logging.apache.org/log4j/,去下载log4j的JAR包,现在的稳定版本是Apache log4j 1.2.16。下载完成后将log4j-1.2.16.jar包导入到Hibernate项目中。

2、在src目录下设置log4j的配置文件log4j.properties,可以直接复制hibernate-release-4.1.2.Final\project\etc\log4j.properties到src目录中,其默认内容为:

### direct log messages to stdout ###
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

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

#log4j.logger.org.hibernate=info
log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

-------------用户可以根据自己需要选择性的输出想要的信息。此处我们将log4j.logger.org.hibernate=debug和log4j.logger.org.hibernate.type=info都注释掉,仅仅输出log4j.logger.org.hibernate.tool.hbm2ddl=debug的信息,则log4j.properties的内容为:

### direct log messages to stdout ###
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

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

3、运行测试类,得到日志信息。

11:33:59,165  WARN DTDEntityResolver:74 - HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
11:34:00,659  INFO SchemaExport:343 - HHH000227: Running hbm2ddl schema export
11:34:00,660 DEBUG SchemaExport:353 - Import file not found: /import.sql
Hibernate: drop table if exists User
Hibernate: create table User (id integer not null, name varchar(255), age integer, primary key (id))
11:34:00,679  INFO SchemaExport:405 - HHH000230: Schema export complete
Hibernate: insert into User (name, age, id) values (?, ?, ?)

---------------Hibernate配置文件hibernate.cfg.xml中配置<property name="hbm2ddl.auto">create</property>则会出现以上日志信息。

---------------若在上面的基础上配置<property name="format_sql">true</property>,使得在log中打印出更漂亮的SQL,则得出日志信息:

12:41:46,280  WARN DTDEntityResolver:74 - HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
12:41:47,014  INFO SchemaExport:343 - HHH000227: Running hbm2ddl schema export
12:41:47,014 DEBUG SchemaExport:353 - Import file not found: /import.sql
Hibernate: 
    drop table if exists User
Hibernate: 
    create table User (
        id integer not null,
        name varchar(255),
        age integer,
        primary key (id)
    )
12:41:47,056  INFO SchemaExport:405 - HHH000230: Schema export complete
Hibernate: 
    insert 
    into
        User
        (name, age, id) 
    values
        (?, ?, ?)

 -----------若设置为<property name="hbm2ddl.auto">update</property>则会出现以下日志信息:

12:47:48,840  WARN DTDEntityResolver:74 - HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
12:47:49,546  INFO SchemaUpdate:182 - HHH000228: Running hbm2ddl schema update
12:47:49,546  INFO SchemaUpdate:193 - HHH000102: Fetching database metadata
12:47:49,548  INFO SchemaUpdate:205 - HHH000396: Updating schema
12:47:49,573  INFO TableMetadata:65 - HHH000261: Table found: hibernate.user
12:47:49,573  INFO TableMetadata:66 - HHH000037: Columns: [id, age, name]
12:47:49,574  INFO TableMetadata:68 - HHH000108: Foreign keys: []
12:47:49,574  INFO TableMetadata:69 - HHH000126: Indexes: [primary]
12:47:49,574  INFO SchemaUpdate:240 - HHH000232: Schema update complete
Hibernate: 
    insert 
    into
        User
        (name, age, id) 
    values
        (?, ?, ?)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值