iBATIS - Hata ayıklama

İBATIS ile çalışırken programınızda hata ayıklamak kolaydır. iBATIS, yerleşik günlük kaydı desteğine sahiptir ve aşağıdaki günlük kaydı kitaplıkları ile çalışır ve bunları bu sırayla arar.

  • Jakarta Commons Günlüğü (JCL).
  • Log4J
  • JDK günlük kaydı

İBATIS ile birlikte yukarıda listelenen kitaplıklardan herhangi birini kullanabilirsiniz.

Log4J ile hata ayıklama

Log4J'yi günlük kaydı için kullanacağınızı varsayarsak. Devam etmeden önce aşağıdaki noktaları çapraz kontrol etmeniz gerekir -

  • Log4J JAR dosyası (log4j- {version} .jar) CLASSPATH içinde olmalıdır.
  • CLASSPATH'da log4j.properties'e sahipsiniz.

Log4j.properties dosyası aşağıdadır. Bazı satırların yorumlandığını unutmayın. Ek hata ayıklama bilgilerine ihtiyacınız varsa açıklamalarını kaldırabilirsiniz.

# Global logging configuration
log4j.rootLogger = ERROR, stdout

log4j.logger.com.ibatis = DEBUG

# shows SQL of prepared statements
#log4j.logger.java.sql.Connection = DEBUG

# shows parameters inserted into prepared statements
#log4j.logger.java.sql.PreparedStatement = DEBUG

# shows query results
#log4j.logger.java.sql.ResultSet = DEBUG

#log4j.logger.java.sql.Statement = DEBUG

# Console output
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %5p [%t] − %m%n

Apaches sitesinde - Log4J Documentation - Log4J için eksiksiz dokümantasyonu bulabilirsiniz .

iBATIS Hata Ayıklama Örneği

Aşağıdaki Java sınıfı, Java uygulamaları için Log4J günlük kitaplığını başlatan ve kullanan çok basit bir örnektir. CLASSPATH'da bulunan yukarıda belirtilen özellik dosyasını kullanırdık.

import org.apache.log4j.Logger;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class IbatisUpdate{
   static Logger log = Logger.getLogger(IbatisUpdate.class.getName());

   public static void main(String[] args) throws IOException,SQLException{
   
      Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
      SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);

      /* This would insert one record in Employee table. */
      log.info("Going to update record.....");
      Employee rec = new Employee();
      rec.setId(1);
      rec.setFirstName( "Roma");
      smc.update("Employee.update", rec );
      log.info("Record updated Successfully ");

      log.debug("Going to read records.....");
      List <Employee> ems = (List<Employee>) 
         smc.queryForList("Employee.getAll", null);
      Employee em = null;
		
      for (Employee e : ems) {
         System.out.print("  " + e.getId());
         System.out.print("  " + e.getFirstName());
         System.out.print("  " + e.getLastName());
         System.out.print("  " + e.getSalary());
         em = e;
         System.out.println("");
      }
      log.debug("Records Read Successfully ");
   }
}

Derleme ve Çalıştırma

İlk olarak, derleme ve yürütme için ilerlemeden önce PATH ve CLASSPATH'ı uygun şekilde ayarladığınızdan emin olun.

  • Employee.xml'yi yukarıda gösterildiği gibi oluşturun.
  • Employee.java'yı yukarıda gösterildiği gibi oluşturun ve derleyin.
  • Yukarıda gösterildiği gibi IbatisUpdate.java'yı oluşturun ve derleyin.
  • Yukarıda gösterildiği gibi log4j.properties oluşturun.
  • Programı çalıştırmak için IbatisUpdate ikili dosyasını çalıştırın.

Aşağıdaki sonucu alırsınız. EMPLOYEE tablosunda bir kayıt güncellenecek ve daha sonra aynı kayıt EMPLOYEE tablosundan okunacaktır.

DEBUG [main] - Created connection 28405330.
DEBUG [main] - Returned connection 28405330 to pool.
DEBUG [main] - Checked out connection 28405330 from pool.
DEBUG [main] - Returned connection 28405330 to pool.
   1  Roma  Ali  5000
   2  Zara  Ali  5000
   3  Zara  Ali  5000

Hata Ayıklama Yöntemleri

Yukarıdaki örnekte sadece kullandık info() yöntem, ancak gereksinimlerinize göre aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz -

public void trace(Object message);
public void debug(Object message);
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);