Hibernate4日志打印_log

在hibernate4中,从hibernate-release-4.3.11.Final\project\etc这个目录中,我们看到了一个日志配置文件,如图:



 所以我们知道hibernate是使用log4j打印日志信息,那么接下来我们就讲讲日志相关知识以及在hibernate中怎样使用log4j.properties。


一、slf4j和log4j

日志记录对于java应用是很重要的,现在已经有很多记录日志的库,我们可以直接拿过来使用,省去了写一个日志系统以及维护的繁琐。

       常见的日志库有java.util.logging,Apache的log4j以及logback,这几个日志库都是日志记录的实现,提供了具体的日志解决方案,是一个具体的日志记录系统,我们可以通过配置文件灵活的配置日志的记录格式、记录级别、输出格式等。

        而slf4j(Simple Logging Facade for Java),简单日志门面,并没有实现日志记录,只是一个抽象层,它不是具体的解决方案,只是服务于具体的日志记录系统,如log4j。


下面讲讲log4j.properties配置文件:


            配置文件实例代码如下:

# 日志输出级别(INFO)和输出位置(stdout,R)
log4j.rootLogger=INFO, stdout , R

# 日志输出位置为控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

# 日志输出位置为文件
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

# 定义相应包路径下的日志输出级别
log4j.logger.com.alibaba=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.org.springframework=DEBUG
log4j.logger.com.ibatis.db=WARN
log4j.logger.org.apache.velocity=FATAL
 
log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.logicalcobwebs=WARN

配置说明:

说明:

  • log4j.rootCategory=INFO, stdout , R

    此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。等级可分为OFFFATALERRORWARNINFODEBUGALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger。

  • log4j.appender.stdout=org.apache.log4j.ConsoleAppender

此句为定义名为stdout的输出端是哪种类型,可以是org.apache.log4j.ConsoleAppender(控制台),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  • log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

此句为定义名为stdout的输出端的layout是哪种类型,可以是org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

 

  • log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

 如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:%m 输出代码中指定的消息;%M 输出打印该条日志的方法名;%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;%r 输出自应用启动到输出该log信息耗费的毫秒数;%c 输出所属的类目,通常就是所在类的全名;%t 输出产生该日志事件的线程名;%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;%l 输出日志事件的发生位置,及在代码中的行数;[QC]是log信息的开头,可以为任意字符,一般为项目简称。输出示例[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'


       下面我们以hibernate为例,讲一个,怎样使用log4j:

二、hibernate日志使用步骤

新建了一个java项目,名称是hibernate_log,结构如下:


项目中红框框以外的代码,请参见Hibernate环境搭建和配置



hibernate搭建完成以后,就是log日志的步骤了,如下:


       1、需要使用三个jar包,分别是:

             1)、log4j-1.2.x.jar

             2)、slf4j-api-1.x.x.jar

             3)、slf4j-log4j12-1.x.x.jar

             x-具体版本号

        2、在项目的src下,添加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=info, stdout

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

### 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=info

### 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、在TestException类中,直接运行main主方法,可以看到打印了好多的日志。





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Hibernate 2.1.8 版本和 log4j 打印参数时,可以通过配置文件进行相应设置。 首先,需要创建一个 log4j 的配置文件,命名为 log4j.properties。该文件需要放置到类路径下(一般是项目的 src 目录下),其中的内容如下所示: ```properties # 设置日志级别为DEBUG,以便打印所有级别的日志 log4j.rootLogger=DEBUG, stdout # 设置控制台输出的日志级别为DEBUG log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Threshold=DEBUG log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # 设置 Hibernate日志级别为TRACE,以便打印 Hibernate 的详细日志信息 log4j.logger.org.hibernate=TRACE ``` 在上述配置中,我们将日志级别设置为 DEBUG,以便打印 Hibernate 的所有级别的日志。同时,我们将控制台输出的日志级别也设置为 DEBUG,以确保打印出所有的日志信息。还需要注意的是,我们设置了 Hibernate日志级别为 TRACE,这样会打印Hibernate 的详细日志信息,包括 SQL 语句、参数等。 接下来,在代码中使用 Hibernate 进行数据库操作时,日志将自动打印相应的参数信息。例如,我们执行一个查询操作,代码如下所示: ```java String hql = "SELECT u FROM User u WHERE u.status = :status"; Query query = session.createQuery(hql); query.setParameter("status", "active"); List<User> userList = query.list(); ``` 在执行以上代码时,Hibernate 会使用 log4j 打印相关的日志信息,其中包括 SQL 语句、参数等。如果配置正确,你应该能够在控制台或日志文件中看到类似如下的日志信息: ``` DEBUG org.hibernate.SQL - SELECT u FROM User u WHERE u.status = 'active' ``` 通过以上配置,我们可以打印Hibernate 的参数,包括 SQL 语句中使用的参数值。在实际开发中,可以根据自己的需求进行日志级别和输出方式的设置,以方便调试和排查问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值