basic/spring

[spring 06] 동적 SQL, log4j

못지(Motji) 2021. 8. 8. 15:30

동적 SQL

  1. if
  2. choose : if-else의 역할
    ∙ when
    ∙ otherwise
  3. trim : profix, suffix, xxxOverrides
  4. foreach : 반복문

☑ like
▪ select * from board where 컬럼명 like '%키워드%';
▪ subject.  a,b,c 병원
▪ content

select * from board where ${sel} like '%#{search}';
select * from board where subject like '%병원%'


☑ 컬럼명 ${}
 #{}  setString '  '
      setInt. 10

log4j : log for java

• 프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티
• 디버그용 도구로 주로 사용되고 있다
• 로그문의 출력을 다양한 대상을 할 수 있도록 도와주는 도구 (오픈소스)
• 6단계의 장애레벨을 사용 TRACE, DEBUG, INFO, WARN, ERROR, FATAL

1) 라이브러리 추가
∙ log4j
∙ slf4j-api
∙ slf4j-log4j12

log4j db용

 

2) log4j 설정파일
∙ /WEB-INF/log/log4j.xml

3) 구조
∙ Logger(Category) : 로깅메세지를 Appender에 전달
∙ 로그 출력여부는 로그문의 레벨과 로거의 레벨을 가지고 결정 6가지 로그 레벨을 가지고 있다.
☑ Appender : 로그의 출력위치를 결정 (파일, 콘솔, DB등)
☑ Layout : 어떤 형식으로 출력할 것인지 layout 결정하는것
▸DateLayout, HTMLLayout, PatternLayout...

4) 레벨 ( 심각한것부터 나열 ) 
∙ FATAL : 아주 심각한 에러
∙ ERROR : 요청 처리하는 중 문제 발생
∙ WARN  : 처리가 가능한 문제지만, 향후 시스템 에러의 원인이 될수도 있는 경고성 메세지
∙ INFO  : 로그인, 상태변경과 같은 정보성 메세지
∙ DEBUG : 개발시 디버그 용도로 사용한 메세지
∙ TRACE : 새로추가된 레벨로 DEBUG 좀 더 상세한 상태를 나타내줌

5) Pattern Option
∙ %p : debug,info,warn,error,fatal 로그레벨
∙ %m : 로그 내용 출력
∙ %d : 로깅 이벤트 발생 시간 출력 %d{yyyy-MM-dd HH:mm:ss}  
∙ %t : 로그 이벤트 발생된 스레드 이름 출력
∙ %c : 카테고리 출력 : a.b.c %c{2}
∙ %C : 클래스명출력 : a.b.c.DClass %C{2} c.DClass
∙ %L : 로깅 발생한 caller의 라인수 출력
∙ %n : 개행문자
∙ %M : 로깅이 발생한 메서드 이름
∙ %F : 로깅 발생한 프로그램 파일명 

6) 주요 클래스
∙ ConsoleAppender
∙ FileAppender
∙ RollingAppender
∙ DailyRollingAppender
∙ JDBCAppender
∙ SMTPAppender
∙ NTEventAppender

7) 로그 설정이 적용되기 위해 설정

∙ web.xml > <context-param>, <listener> 추가

∙ spring-servlet.xml > <bean id="dataSource"> 수정

∙ log4j.xml > <logger name="sqltiming"> 추가