Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 사용자예외클래스생성
- abstract
- 객체 비교
- 추상메서드
- 메소드오버로딩
- 오라클
- oracle
- 정수형타입
- 자바
- 한국건설관리시스템
- 참조형변수
- 예외처리
- exception
- 컬렉션 타입
- 대덕인재개발원
- 집합_SET
- 자동차수리시스템
- 생성자오버로드
- EnhancedFor
- cursor문
- 어윈 사용법
- 컬렉션프레임워크
- Java
- 인터페이스
- 다형성
- 환경설정
- GRANT VIEW
- 제네릭
- NestedFor
- 예외미루기
Archives
- Today
- Total
거니의 velog
230922_Log4J 본문
[log4j.properties]
# Root logger option
# 1. 로그 출력 Level은 INFO부터 할것임.
# 2. rootLogger 에 사용할 로깅 Appender로 stdout이라는것과
# logfile이라는 것 두가지를 사용하겠다
log4j.rootLogger=debug, stdout, logfile
# Direct log messages to stdout
# ConversionPattern은 로그가 어떠한 형식으로 출력될것인지
# 그 포맷을 정의하는 것.
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=%5p %F-(%C{2}:%L) - %m%n
# Direct log message to log file
# logfile이라는 appender는 로그를 파일로 출력해주는 놈인데,
# 파일path를 정의 할 수 있다.
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.File=D:/application.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %5p (%C{2} - %M:%L) - %m%n
log4j.appender.logfile.Append=true
[Log4jTest.java]
package kr.or.ddit.basic;
import org.apache.log4j.Logger;
public class Log4jTest {
// Logger 클래스의 인스턴스를 받아온다.
static Logger logger = Logger.getLogger(Log4jTest.class);
public static void main(String[] args) {
// 로그 기록 남기기
// 형식) Logger객체.로그레벨이름("출력할 메시지")
// 예) logger.trace("메시지")
logger.trace("이것은 Log4j의 [TRACE]레벨의 출력입니다...");
logger.debug("이것은 Log4j의 [DEBUG]레벨의 출력입니다...");
logger.info("이것은 Log4j의 [INFO]레벨의 출력입니다...");
logger.warn("이것은 Log4j의 [WARN]레벨의 출력입니다...");
logger.error("이것은 Log4j의 [ERROR]레벨의 출력입니다...");
logger.fatal("이것은 Log4j의 [FATAL]레벨의 출력입니다...");
}
}
[DBUtil3.java]
package kr.or.ddit.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;
import org.apache.log4j.Logger;
// JDBC드라이버를 로딩하고
// Connection객체를 생성해서 반환하는 메서드로 구성된 class
//(dbinfo.properties 파일의 내용을 이용하여 설정하기)
//==> ResourceBundle 객체 이용하기
public class DBUtil3 {
static final Logger logger = Logger.getLogger(DBUtil3.class);
static ResourceBundle bundle; // ResourceBundle객체 변수 선언
static {
// 객체 생성
bundle = ResourceBundle.getBundle("kr.or.ddit.jdbc.config.dbinfo");
logger.info("ResourceBundle객체 생성 - dbinfo.properties파일 이용");
try {
// Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName(bundle.getString("driver"));
logger.debug("DB 드라이버 로딩 성공~~");
} catch (ClassNotFoundException e) {
// System.out.println("드라이버 로딩 실패~~~");
logger.error("드라이버 로딩 실패~~~", e);
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection conn = null;
// String url = "jdbc:oracle:thin:@localhost:1521:xe";
// String user = "pc_09";
// String password = "java";
String url = bundle.getString("url");
String user = bundle.getString("user");
String password = bundle.getString("password");
try {
conn = DriverManager.getConnection(url, user, password);
logger.debug("DB 연결 성공!!!");
} catch (SQLException e) {
// System.out.println("DB 연결 실패~~~");
logger.error("DB 연결 실패~~~", e);
e.printStackTrace();
}
return conn;
}
}
[MemberController 실행...]
[MemberDaoImpl.java]
package kr.or.ddit.member.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import kr.or.ddit.util.DBUtil3;
import kr.or.ddit.vo.MemberVO;
public class MemberDaoImpl implements IMemberDao {
private static final Logger logger = Logger.getLogger(MemberDaoImpl.class);
// 1번
private static MemberDaoImpl dao;
// 2번
private MemberDaoImpl() {}
// 3번
public static MemberDaoImpl getInstance() {
if(dao == null) dao = new MemberDaoImpl();
return dao;
}
@Override
public int insertMember(MemberVO memVo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
logger.info("Connection객체 생성 완료...");
String sql = " insert into mymember (mem_id, mem_pass, mem_name, mem_tel, mem_addr) ";
sql += " values(?, ?, ?, ?, ?) ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memVo.getMem_id());
pstmt.setString(2, memVo.getMem_pass());
pstmt.setString(3, memVo.getMem_name());
pstmt.setString(4, memVo.getMem_tel());
pstmt.setString(5, memVo.getMem_addr());
logger.debug("PrepareStatement객체 생성 완료...");
logger.debug("실행 SQL : " + sql);
logger.debug("사용 데이터 [" + memVo.getMem_id() + ", " + memVo.getMem_pass() + ", " + memVo.getMem_name() + ", " + memVo.getMem_tel() + ", " + memVo.getMem_addr() + "]");
cnt = pstmt.executeUpdate();
logger.info("실행 작업 성공~~~");
} catch (SQLException e) {
logger.error("실행 작업 실패!!!", e);
e.printStackTrace();
} finally {
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
logger.info("자원 반납 완료~~~");
}
return cnt;
}
......
[MemberDaoImpl.java]
package kr.or.ddit.member.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import kr.or.ddit.util.DBUtil3;
import kr.or.ddit.vo.MemberVO;
public class MemberDaoImpl implements IMemberDao {
private static final Logger logger = Logger.getLogger(MemberDaoImpl.class);
// 1번
private static MemberDaoImpl dao;
// 2번
private MemberDaoImpl() {}
// 3번
public static MemberDaoImpl getInstance() {
if(dao == null) dao = new MemberDaoImpl();
return dao;
}
@Override
public int insertMember(MemberVO memVo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
logger.info("Connection객체 생성 완료...");
String sql = " insert into mymember (mem_id, mem_pass, mem_name, mem_tel, mem_addr) ";
sql += " values(?, ?, ?, ?, ?) ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memVo.getMem_id());
pstmt.setString(2, memVo.getMem_pass());
pstmt.setString(3, memVo.getMem_name());
pstmt.setString(4, memVo.getMem_tel());
pstmt.setString(5, memVo.getMem_addr());
logger.debug("PrepareStatement객체 생성 완료...");
logger.debug("실행 SQL : " + sql);
logger.debug("사용 데이터 [" + memVo.getMem_id() + ", " + memVo.getMem_pass() + ", " + memVo.getMem_name() + ", " + memVo.getMem_tel() + ", " + memVo.getMem_addr() + "]");
cnt = pstmt.executeUpdate();
logger.info("실행 작업 성공~~~");
} catch (SQLException e) {
logger.error("실행 작업 실패!!!", e);
e.printStackTrace();
} finally {
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
logger.info("자원 반납 완료~~~");
}
return cnt;
}
@Override
public int deleteMember(String memId) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
logger.info("Connection객체 생성 완료...");
String sql = " delete from mymember where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memId);
logger.debug("PrepareStatement객체 생성 완료...");
logger.debug("실행 SQL : " + sql);
logger.debug("사용된 파라미터 값 [" + memId + "]");
cnt = pstmt.executeUpdate();
logger.info("멤버 삭제 작업 성공~~~");
} catch (SQLException e) {
logger.error("멤버 삭제 작업 실패!!!", e);
e.printStackTrace();
} finally {
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
logger.info("자원 반납 완료~~~");
}
return cnt;
}
@Override
public int updateMember(MemberVO memVo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
logger.info("Connection객체 생성 완료...");
String sql = " update mymember set "
+ " mem_pass = ?, mem_name = ?, mem_tel = ?, mem_addr = ? "
+ " where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memVo.getMem_pass());
pstmt.setString(2, memVo.getMem_name());
pstmt.setString(3, memVo.getMem_tel());
pstmt.setString(4, memVo.getMem_addr());
pstmt.setString(5, memVo.getMem_id());
logger.debug("PrepareStatement객체 생성 완료...");
logger.debug("실행 SQL : " + sql);
logger.debug("사용 데이터 [" + memVo.getMem_id() + ", " + memVo.getMem_pass() + ", " + memVo.getMem_name() + ", " + memVo.getMem_tel() + ", " + memVo.getMem_addr() + "]");
cnt = pstmt.executeUpdate();
logger.info("멤버 수정 작업 성공~~~");
} catch (SQLException e) {
logger.error("멤버 수정 작업 실패!!!", e);
e.printStackTrace();
} finally {
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
logger.info("자원 반납 완료~~~");
}
return cnt;
}
@Override
public List<MemberVO> getAllMember() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<MemberVO> memList = null; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
logger.info("Connection객체 생성 완료...");
String sql = " select * from mymember ";
pstmt = conn.prepareStatement(sql);
logger.debug("PrepareStatement객체 생성 완료...");
logger.debug("실행 SQL : " + sql);
rs = pstmt.executeQuery();
while(rs.next()) {
if(memList == null) memList = new ArrayList<MemberVO>();
// 한 개의 레코드가 저장될 VO객체 생성
MemberVO memVo = new MemberVO();
// ResultSet에서 각 컬럼값들을 가져와 VO의 멤버변수에 저장한다.
memVo.setMem_id(rs.getString("mem_id"));
memVo.setMem_pass(rs.getString("mem_pass"));
memVo.setMem_name(rs.getString("mem_name"));
memVo.setMem_tel(rs.getString("mem_tel"));
memVo.setMem_addr(rs.getString("mem_addr"));
// 구성된 VO객체를 List에 추가한다.
memList.add(memVo);
}
logger.info("멤버 전체 조회 작업 성공~~~");
} catch (SQLException e) {
logger.error("멤버 전체 조회 작업 실패!!!", e);
e.printStackTrace();
} finally {
if(rs != null) try { rs.close(); } catch (SQLException e) {}
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
logger.info("자원 반납 완료~~~");
}
return memList;
}
@Override
public int getMemIdCount(String memId) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
logger.info("Connection객체 생성 완료...");
String sql = " select count(*) as cnt from mymember where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memId);
logger.debug("PrepareStatement객체 생성 완료...");
logger.debug("실행 SQL : " + sql);
logger.debug("사용된 파라미터 값 [" + memId + "]");
rs = pstmt.executeQuery();
if(rs.next()) {
cnt = rs.getInt("cnt");
}
logger.info("멤버 ID 조회 작업 성공~~~");
} catch (SQLException e) {
logger.error("멤버 ID 조회 작업 실패!!!", e);
e.printStackTrace();
} finally {
if(rs != null) try { rs.close(); } catch (SQLException e) {}
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
logger.info("자원 반납 완료~~~");
}
return cnt;
}
@Override
public int updateMember2(Map<String, String> paramMap) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
// key값 정보 ==> 회원ID(memid), 수정할컬럼명(field), 수정할데이터(data)
try {
conn = DBUtil3.getConnection();
logger.info("Connection객체 생성 완료...");
String sql = " update mymember set " + paramMap.get("field") + " = ?"
+ " where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, paramMap.get("data"));
pstmt.setString(2, paramMap.get("memid"));
logger.debug("PrepareStatement객체 생성 완료...");
logger.debug("실행 SQL : " + sql);
logger.debug("사용 데이터 [" + paramMap.get("field") + ", " + paramMap.get("data") + ", " + paramMap.get("memid") + "]");
cnt = pstmt.executeUpdate();
logger.info("멤버 부분 수정 작업 성공~~~");
} catch (SQLException e) {
logger.error("멤버 부분 수정 작업 실패!!!", e);
e.printStackTrace();
} finally {
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
logger.info("자원 반납 완료~~~");
}
return cnt;
}
}
'대덕인재개발원 > 대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
230926_Servlet 2 (0) | 2023.09.26 |
---|---|
230925_Servlet 1 (0) | 2023.09.25 |
230921_MyBatis 과제_myBatisBoardTest (0) | 2023.09.21 |
230921_MyBatis 2 (0) | 2023.09.21 |
230920_MyBatis 1 (0) | 2023.09.20 |