include log4j properties file in hibernate to show

2019-04-04 03:23发布

I have crearte log4j.properties file like below:

log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug

log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE

Can someone help me to how to include it in hibernate.cfg.xml file? I am sorry I actually don't know how log4j works. I create this to display my hibernate query with value instead of ? but still it displays ? nothing changes so what I need to proceed further?

I took reference from here Hibernate show real SQL

8条回答
乱世女痞
2楼-- · 2019-04-04 03:51

In my case it wasn't hibernate.cfg.xml, it was log4j.xml file where I put the code given by @jdev

< property name="show_sql">true Shows SQL queries

< property name="format_sql">true Format the query shown on console

< property name="use_sql_comments">true comments will be added to the queries

If your project is having 1000s of queries printing to the console, make others false: < property name="show_sql">true < property name="format_sql">false < property name="use_sql_comments">false

OR write an appender to the log4j.xml which I have done in my project, just to write all SQL queries on separate text file which is specified here: Configuring Hibernate logging using Log4j XML config file?

查看更多
女痞
3楼-- · 2019-04-04 03:52

i like sql logging with proxy of jdbcdslog much more than hibernate logging.

Log SQL that is communicated with the database

查看更多
别忘想泡老子
4楼-- · 2019-04-04 03:59

The 'show_sql' property in your hibernate.cfg.xml causes the queries to be printed directly to the console.

Log4j allows output to be logged anywhere from console to file to network ports to databases. But the simple configuration that you have is supposed to print on the console as well. So first remove the show_sql property to see if Log4j puts anything on the console at all.

If this doesn't work, it shows that Log4j is not configured correctly. If you're using hibernate > 3.5, it uses the slf4j api, which uses logback by default instead of log4j. You can easily switch to log4j by removing logback jar(s) from your classpath, and adding slf4j-log4j12.jar and log4j.jar instead.

The Log4j tracing also prints the queries using '?', but it also prints the parameter bindings, i.e. what the '?' will be replaced with by the database driver or server.

查看更多
放荡不羁爱自由
5楼-- · 2019-04-04 04:00

You can't print the values inline. Hibernate will always print the ? when logging the queries. The output of org.hibernate.type logging at the DEBUG level shows the values and types that are used to replace those question marks.

查看更多
我欲成王,谁敢阻挡
6楼-- · 2019-04-04 04:06

Please refer hibernate reference as per your version. Here is 3.3 Link

Edit :-

  1. In order to setup logging you will need slf4j-api.jar in your classpath together with the jar file for your preferred binding - slf4j-log4j12.jar in the case of Log4J.
  2. Put log4j.properties file in your classpath. An example properties file is distributed with Hibernate in the src/ directory.
  3. Enable following log 4j categories.

    org.hibernate.SQL   Log all SQL DML statements as they are executed
    
    org.hibernate.type  Log all JDBC parameters
    
查看更多
叼着烟拽天下
7楼-- · 2019-04-04 04:08

Add this also

<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>

your problem will be fixed.

查看更多
登录 后发表回答