Seam ve Hibernate Log Yönetimi

Hibernate Log4J Konfigurasyonu

Hibernate Log4J Konfigurasyonu

JBoss ile daha doğrusu aslında Hibernate kullarak geliştirdiğiniz uygulamalarda üretilen sql ler praperedStatement a göre hazırlanmaktadır. Bu yüzden sql ler içerisinde parametreler yerine ? görürsünüz. Eğer gönderdiğiniz parametereleri console ekranına basmak isterseniz aşağıdaki konfigürasyonu yapabilirsiniz.

Öncelikle JBoss_Dizini\server\all\conf altında jboss-log4j.xml dosyasını açın.
Sadece istediğimiz bilgileri basması için yeni bir appender tanımı yapalım. Bunun için aşağıdaki kodu diğer appendar ların arasına ekleyelim.

    <appender name="HIBERNATE_INFO" class="org.apache.log4j.ConsoleAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="Target" value="System.out"/>
      <param name="Threshold" value="TRACE"/>
     
      <layout class="org.apache.log4j.PatternLayout">
      <!– The default pattern: Date Priority [Category] Message\n –>
      <param name="ConversionPattern" value="Paramter : %d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
    </appender>

Şimdi hibernate tarafına gönderilen parametreleri yazdırmak için aşağıdaki category tanımı yapalım.

    <category name="org.hibernate.type">  
            <priority value="TRACE"/>  
     <appender-ref ref="HIBERNATE_INFO"/>
    </category>

JBoss u restart edip yeni bir veri ekleyelim. Console çıktısı aşağıdaki gibi olacaktır.

insert into
Ogrenci (ad, soyad, version)
values(?, ?, ?)

Paramter : 18:25:59,454 TRACE [StringType] binding ‘Melih’ to parameter: 1
Paramter : 18:25:59,460 TRACE [StringType] binding ‘Sakarya’ to parameter: 2
Paramter : 18:25:59,461 TRACE [IntegerType] binding ’0′ to parameter: 3

Eğer aşağıdaki tanımı eklerseniz veritabanı tarafındaki create ve alter gibi ddl operasyonlarını görebilirsiniz.

    <category name="org.hibernate.tool.hbm2ddl">  
     <priority value="TRACE"/>  
     <appender-ref ref="HIBERNATE_INFO"/>
    </category>

Bu durumda schema update lerinde aşağıdaki gibi bir çıktı olur.

Paramter : 18:36:55,562 DEBUG [SchemaUpdate] alter table Konu add column soyad varchar(255)
Paramter : 18:36:56,152 DEBUG [SchemaUpdate] alter table Konu add column yas integer
Paramter : 18:36:56,619 INFO [SchemaUpdate] schema update complete

Bunun haricinde diğer log parametreleri aşağıdaki gibidir.

    Category                    Function
     
    org.hibernate.SQL           Log all SQL DML statements as they are executed
    org.hibernate.type          Log all JDBC parameters
    org.hibernate.tool.hbm2ddl  Log all SQL DDL statements as they are executed
    org.hibernate.pretty        Log the state of all entities (max 20 entities) associated with the session at flush time
    org.hibernate.cache         Log all second-level cache activity
    org.hibernate.transaction   Log transaction related activity
    org.hibernate.jdbc          Log all JDBC resource acquisition
    org.hibernate.hql.ast.AST   Log HQL and SQL ASTs during query parsing
    org.hibernate.secure        Log all JAAS authorization requests
    org.hibernate               Log everything (a lot of information, but very useful for troubleshooting)
Jul 11th, 2011
No comments yet.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>