블로그 이미지
프로그램을 가장 훌륭하게 작성하는 방법은 상태가 변경되는 오브젝트들과 수학적인 값을 나타내는 오브젝트들의 조합으로 표현하는 것이다. -Kent Beck 초초초보

카테고리

Programming (184)
ASP.NET (9)
Silverlight (2)
Javascript (20)
C# (8)
java (25)
SQL (14)
Oracle (3)
MyBatis (3)
기타 (52)
개발방법론 (1)
trouble shooting (2)
Linux (5)
스칼라 (5)
html (2)
grails & gradle (3)
Spring (2)
rabbitmq (1)
(3)
spark (0)
docker (3)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

[log4jdbc]SQL query log

java / 2013. 11. 8. 14:55

 

1. table 생성


create table testuser(
id varchar2(100),
pass varchar2(100)
);

insert into testuser values('a', '1234');
insert into testuser values('b', '3456');
commit;

 

2. 사용되는 라이브러리들.

log4j.jar
log4jdbc3-1.2.jar
ojdbc6.jar
slf4j-api-1.5.1.jar
slf4j-log4j12-1.5.1.jar

 

3. SqlLogMain.java

import java.sql.*;
public class SqlLogMain {

 private static final String DB_DRIVER = "net.sf.log4jdbc.DriverSpy"; 
 private static final String DB_CONNECTION = "jdbc:log4jdbc:oracle:thin:@localhost:1521:orcl";
 
// private static final String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
/

 

/ private static final String DB_CONNECTION = "jdbc:oracle:thin:@localhost:1521:orcl";
 private static final String DB_USER = "id";
 private static final String DB_PASSWORD = "pass";
 public static void main(String[] args){
  
  
  try {
    selectRecordsFromDbUserTable();
   } catch (SQLException e) {
    System.out.println(e.getMessage());
   }
  
 }
 private static void selectRecordsFromDbUserTable() throws SQLException {
  Connection dbConnection = null;
  PreparedStatement preparedStatement = null;
  StringBuffer strSQL = new StringBuffer();
  strSQL.append("select * from testuser where id= ? ");
  try {
  dbConnection = getDBConnection();
  preparedStatement = dbConnection.prepareStatement(strSQL.toString());
  preparedStatement.setString(1, "a");
  
    
  ResultSet rs = preparedStatement.executeQuery();
  while (rs.next()) {
  String pass = rs.getString("pass");
  System.out.println("pass : " + pass);
  }
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
  if (preparedStatement != null) {
  preparedStatement.close();
  }
  if (dbConnection != null) {
  dbConnection.close();
  }
  }
  }
 
 
 private static Connection getDBConnection() {
 Connection dbConnection = null;
 try {
 Class.forName(DB_DRIVER);
 } catch (ClassNotFoundException e) {
 System.out.println(e.getMessage());
 }
 try {
 dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER,
 DB_PASSWORD);
 return dbConnection;
 } catch (SQLException e) {
 System.out.println(e.getMessage());
 }


 return dbConnection;
 }

}

 

 

4. properties/log4j.properties

 

log4j.rootLogger=INFO, console


# Console log
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %l - %m%n

 


log4j.logger.jdbc.sqlonly=console

 

 

5. properties 폴더를 프로젝트에 소스 폴더로 포함시킨다.

 

 

------------결과-------------

INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.connectionOpened(Slf4jSpyLogDelegator.java:537) - 1. Connection opened
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. Connection.new Connection returned
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. PreparedStatement.new PreparedStatement returned
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. Connection.prepareStatement(select * from testuser where id= ? ) returned net.sf.log4jdbc.PreparedStatementSpy@1dc7e0e8
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. PreparedStatement.setString(1, "a") returned
DEBUG net.sf.log4jdbc.Slf4jSpyLogDelegator.sqlOccured(Slf4jSpyLogDelegator.java:221) -  SqlLogMain.selectRecordsFromDbUserTable(SqlLogMain.java:32)
1. select * from testuser where id= 'a'

INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.sqlTimingOccured(Slf4jSpyLogDelegator.java:370) - select * from testuser where id= 'a' 
 {executed in 13 msec}
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. ResultSet.new ResultSet returned
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. PreparedStatement.executeQuery() returned net.sf.log4jdbc.ResultSetSpy@5f122d62
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. ResultSet.next() returned true
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. ResultSet.getString(pass) returned 1234
pass : 1234
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. ResultSet.next() returned false
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. PreparedStatement.close() returned
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.connectionClosed(Slf4jSpyLogDelegator.java:556) - 1. Connection closed
INFO  net.sf.log4jdbc.Slf4jSpyLogDelegator.methodReturned(Slf4jSpyLogDelegator.java:162) - 1. Connection.close() returned

 

 

 

 

 

 

 

 

 

 

 

 

SqlLogEx01.zip

 

 

Posted by 초초초보
, |