본문 바로가기

프레임워크/Ibatis

ibatis log4j 설정

1. log4j 설치

http://www.apache.org/  - Logging - log4j 1.2 - Download - apache-log4j-1.2.15.zip 
파일을 받아 압축풀어 JAR 파일(log4j-1.2.15.jar)을  프로젝트의 \WEB-INF\lib\ 폴더에 넣습니다

2. log4j 설정 - 콘솔 출력



\WEB-INF\classes 에 log4j.properties 파일을 추가합니다




# Global logging configuration - 전역 리포팅 레벨 설정
log4j.rootLogger=ERROR, stdout
# SqlMap logging configuration... - SqlMap 리포팅 레벨 설정
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG



# Console output.. - console 출력 설정
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] -%m%n



log4j.rootLogger=ERROR, stdout
이 내용은 log4j의 리포팅 레벨 기본 설정입니다
ERROR 가 리포팅 레벨이고 stdout은 로그를 남기는 appender 입니다



리포팅 레벨이란 로그를 기록하는 기준?범위?입니다
ERROR 는 에러가 발생했을 경우에만 로그를 남기고
DEBUG 는 항상 로그를 남기게 됩니다. 
이것 외에도 여러가지가 있습니다. PDF 파일 참조  Log4jQuickRef.pdf  



기본설정을 ERROR 로 하고 현재 SqlMap 관련 리포팅 레벨만 DEBUG로 정했기 때문에
평상시에는 SqlMap 관련 로그만 출력됩니다
SqlMap 로그 정보도 에러가 났을 때만 보고싶다면 아래 내용을 모두 주석하시면 됩니다 
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
 



또한 기본설정을 DEBUG로 하게되면 SqlMap말고도 모든 로그가 나오게 됩니다 ( 응 ? )
무슨 내용이 나오는지는 직접 확인 하시길 ../ㅅ/




3. log4j 설정 - 콘솔+파일 출력



log4j.properties 파일을 다음과 같이하면 콘솔과 파일로 출력이 됩니다






# Global logging configuration - 전역 리포팅 레벨 설정
log4j.rootLogger=ERROR, stdout, logfile
# SqlMap logging configuration... - SqlMap 리포팅 레벨 설정
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG



# Console output.. - 콘솔 appender 설정
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] -%m%n



# File output - 파일 appender 설정
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
# 로그 파일 path
log4j.appender.logfile.File=c:/log/ibatis.log
# 파일 이어쓰기 여부 ( false 시 서버재시작하면 덮어씀 )
log4j.appender.logfile.Append=true
# 로그 layout 설정
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n






리포팅레벨은 위에서 얘기했고
또 log4j 에서 기본적으로 알아야 할 것은 Appender(출력방식)와 Layout(출력내용) 인데
둘다 살펴 보겠습니다









4. Appender



1) ConsoleAppender : 말그대로 콘솔에 출력하는 방식으로 특별한 설정이 필요없습니다.. 있어도 무시
2) DailyRollingFileAppender : 시간을 주기로 파일을 생성하여 기록하는 방식입니다
DatePattern 으로 시간 단위를 설정 할 수 있습니다
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
#월단위 log4j.appender.logfile.DatePattern='.'yyyy-MM
#주단위 log4j.appender.logfile.DatePattern='.'yyyy-MM-ww
#12시간단위 log4j.appender.logfile.DatePattern='.'yyyy-MM-dd-a
#시간단위 log4j.appender.logfile.DatePattern='.'yyyy-MM-dd-HH
#분단위 log4j.appender.logfile.DatePattern='.'yyyy-MM-dd-HH-mm



  3) RollingFileAppender : 일정 용량만큼 파일에 쓰는 방식입니다
MaxFileSize 로 파일의 최대크기를 정합니다


MaxBackupIndex 으로 파일최대갯수를 지정합니다. 만약 최대갯수까지 차면 처음의 로그파일에 재기록합니다
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.MaxFileSize=512KB
log4j.appender.logfile.MaxBackupIndex=3



그 외에도 FileAppender , net.SocketHubAppender .. 등 이 더 있지만 설명은 패스!  Log4jQuickRef.pdf  









5. Layout

간단한 설명만 하겠습니다. 출력 결과는 직접 찍어보시기 바랍니다~



1) PatternLayout : 패턴을 직접 정하는 방식입니다.. 보통 이 방식을 씁니다
ConversionPattern 으로 패턴을 정합니다 ( 자세한 내용은 PDF 파일 참조 Log4jQuickRef.pdf  )
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %r [%t] %-5p %c %x - %m%n
#log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
#log4j.appender.stdout.layout.ConversionPattern=%5p [%t] -%m%n



2) SimpleLayout : 말그대로 심플하게(?) 보여주는 방식입니다 시간도 안나옵니다.. -_-;
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
3) HTMLLayout : HTML테이블 형식으로 만들어줍니다 오오.... 디자인도 맘에 드는군요
log4j.appender.stdout.layout=org.apache.log4j.HTMLLayout
4) TTCCLayout : 심플보다 좀 많이 나옵니다.. 근데 여기서도 시간은 안나오네여 OTL
log4j.appender.stdout.layout=org.apache.log4j.TTCCLayout


[출처] iBatis 로그보기 - log4j 설정 (Jin 프로젝트) |작성자 심대



-------------------------------------------------------------------

바인딩로그처리(쿼리문에 ? 대신 값이 나오게 하는것)

http://www.phplab.co.kr/cms/board/bod_view.php?code=jsp&no=451&pageID=1



'프레임워크 > Ibatis' 카테고리의 다른 글

mybatis db연결 설정(다중 db)  (0) 2018.09.11
ibatis Transaction에서 오토커밋설정  (0) 2011.07.12