2004년 09월 10일
기본적인 log4j.properties와 간단한 사용법
아직도 System.out.println()으로 디버그용 메시지를 화면에 출력한다면, 이제 삽질 그만하고 로깅 API들을 사용해 볼 것을 권장하고 싶다.
그 중에서도 난 Log4j를 사용한다. (사실 이거밖에 모른다... ;) )
혹여 log4j.properties 설정이 귀찮아서 Log4J를 사용하지 않는다면 다음의 기본적인 log4j.properties를 사용해보자. 이것만으로도 System.out.println과는 비교할 수 없는 강력하고 편리한 로깅 기능을 사용할 수 있다.
기본적인 log4j.properties
아래 로그설정은 로깅 메시지를 화면에도 출력하고 파일로도 출력한다. 파일의 경우에는 매일매일 날짜별로 다른 파일을 사용하므로 한개의 로그 파일이 무한정 커지는 것을 걱정할 필요는 없다.
이 설정대로 하면 로깅 메시지에 로그를 남긴 소스파일의 이름과 소스에서 메소드 이름과 줄 번호까지 출력된다. System.out.println()으로는 꿈도 못꾸는 기능들이다.
저기서 logfile.log 가 로그의 내용을 출력할 파일 이름이다. 적당히 다른 이름으로 바꾼다. 절대경로로 줘도되고 위와 같이 상대경로로 줘도 된다.
위 파일을 클래스패스가 걸린 디렉토리에 두면 된다. 웹 어플리케이션은 WEB-INF/classes에 두면 된다.
로그는 어떻게 남기지?
각 클래스에서 로그를 남길 때는 다음과 같이..
ClassName.class는 로거가 출력할 클래스의 이름이다. 그냥 항상 클래스이름.class로 하면 된다.
만약 static 메소드에서 로거를 사용해야 한다면 로거를 생성하는 부분을
위와 같이 static 으로 선언하면 된다.
되도록 static으로 로거를 생성하지 말라. 이에 관해서는, Logging/StaticLog를 참조한다. 추가: 2006/04/11
실제로 로그 메시지 출력이 어떻게 되는지는 직접 확인해보면 알 수 있을 것이다.
마무리~
자, 이제 프로그램에서 보기 싫은 System.out.println()을 몽땅 없애버리자!!
Log4J하나만으로도 디버깅하기 쉽고 뽀대나고 어딘가 비싸보이는 프로그램이 된다. ^^;
그 중에서도 난 Log4j를 사용한다. (사실 이거밖에 모른다... ;) )
혹여 log4j.properties 설정이 귀찮아서 Log4J를 사용하지 않는다면 다음의 기본적인 log4j.properties를 사용해보자. 이것만으로도 System.out.println과는 비교할 수 없는 강력하고 편리한 로깅 기능을 사용할 수 있다.
기본적인 log4j.properties
아래 로그설정은 로깅 메시지를 화면에도 출력하고 파일로도 출력한다. 파일의 경우에는 매일매일 날짜별로 다른 파일을 사용하므로 한개의 로그 파일이 무한정 커지는 것을 걱정할 필요는 없다.
이 설정대로 하면 로깅 메시지에 로그를 남긴 소스파일의 이름과 소스에서 메소드 이름과 줄 번호까지 출력된다. System.out.println()으로는 꿈도 못꾸는 기능들이다.
log4j.rootLogger = DEBUG, stdout, dailyfile
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n
log4j.appender.dailyfile.Threshold = DEBUG
log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.File = logfile.log
log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n
저기서 logfile.log 가 로그의 내용을 출력할 파일 이름이다. 적당히 다른 이름으로 바꾼다. 절대경로로 줘도되고 위와 같이 상대경로로 줘도 된다.
위 파일을 클래스패스가 걸린 디렉토리에 두면 된다. 웹 어플리케이션은 WEB-INF/classes에 두면 된다.
로그는 어떻게 남기지?
각 클래스에서 로그를 남길 때는 다음과 같이..
// 로거 임포트하기
import org.apache.log4j.Logger;
public class ClassName {
/** Log4J 로거 얻기 */
private Logger log = Logger.getLogger(ClassName.class);
//혹은 private Logger log = Logger.getLogger(this.getClass());
public void method() {
if (log.isDebugEnabled()) {
log.debug("디버깅용 메시지");
}
log.info("정보를 남기기위한 메시지");
try {
//어쩌구 저쩌구 실행...
} catch (Exception ex) {
//로그에 예외 메시지도 함께 남기기
log.error("예외가 발생했어요~~", ex);
}
}
}
ClassName.class는 로거가 출력할 클래스의 이름이다. 그냥 항상 클래스이름.class로 하면 된다.
만약 static 메소드에서 로거를 사용해야 한다면 로거를 생성하는 부분을
private static Logger log = Logger.getLogger(ClassName.class);
위와 같이 static 으로 선언하면 된다.
되도록 static으로 로거를 생성하지 말라. 이에 관해서는, Logging/StaticLog를 참조한다. 추가: 2006/04/11
실제로 로그 메시지 출력이 어떻게 되는지는 직접 확인해보면 알 수 있을 것이다.
마무리~
자, 이제 프로그램에서 보기 싫은 System.out.println()을 몽땅 없애버리자!!
Log4J하나만으로도 디버깅하기 쉽고 뽀대나고 어딘가 비싸보이는 프로그램이 된다. ^^;
# by | 2004/09/10 22:02 | 프로그래밍 | 트랙백(5) | 핑백(3) | 덧글(6)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : log4j 간단 적용법
기본적인 log4j.properties와 간단한 사용법 아직도 System.out.println()으로 디버그용 메시지를 화면에 출력한다면, 이제 삽질 그만하고 로깅 API들을 사...more
제목 : log4j 간단 적용법
log4j 간단 적용법...more
제목 : log4j사용 로그남기기
기본적인 log4j.properties와 간단한 사용법 ...more
제목 : log4j를 이용한 로깅
아직도 System.out.println()으로 디버그용 메시지를 화면에 출력한다면, 이제 삽질 그만하고 로깅 API들을 사용해 볼 것을 권장하고 싶다.그 중에서도 난 Log4j를 사용한다. (사실 이거밖에 모른다... ;) )혹여 log4j.properties 설정이 귀찮아서 Log4J를 사용하지 않는다면 다음의 기본적인 log4j.properties를 사용해보자. 이것만으로도 System.out.println과는 비교할 수......more
제목 : Log4J Tip & Tech
※ Apache Log4J 와 관련된 유용한 정보들을 모았습니다. 앞으로 계속 업데이트 될 예정입니다. 좋은 정보 공유해주시면 정말 감사하겠습니다. ^___^ Update 2008. 11. 18 1. 기본적인 log4j.properties 와 간단한 사용법 (원문보기)...more
... 만으로도 디버깅하기 쉽고 뽀대나고 어딘가 비싸보이는 프로그램이 된다. ^^; by 권남 출처 : http://kwon37xi.egloos.com/2176487 =========================================================== ... more
... al(strLog);이렇게 하면 된다... 위 소스의 Logger 객체의 각 다섯개의 멤버함수는 따로 설명을 안하겠다. 위에서 다했다.끝이다.참고싸이트..http://kwon37xi.egloos.com/2176487http://blog.naver.com/zoom7810?Redirect=Log&logNo=50032106915http://blog.naver ... more
... 권남님 블로그에서 가져옴출처 : http://kwon37xi.egloos.com/2176487 한국 들어와서 적응 중이다.회사 로깅이 설정 안되어 있는거 같아서.. 해야 할거 같아.간만에 할려니... ... more
가끔 특정 클래스에 대한 로거를 따로 설정하는 경우가 있긴 하지만, 뭐 그리 봅잡하게 추가되지도 않구요.
그래서 사실 항상 저걸 거의 그대로 복사해서 쓴답니다... ^^;
프린트~ 프린트~ :D