다운로드 : http://myhome.gimhae.go.kr/cugain/cugain_pds/cugain_board_javadata/de.jayefem.log4e_free_1.0.4.zip
1. Log4J 간단한 사용법
http://logging.apache.org/ 에 가셔서 Log4J 파일을 다운받으세요.
압축을 풀면 몇몇 폴더들이 보이는데 그중 dist 라는 폴더에서 더 들어가보시면 log4j-???.jar 파일이 있는데 그파일을 해당 프로젝트에 추가해 넣으시면 되겠네요.
(jre/lib/ext에 넣고 쓰셔도 되긴 하지만, appender 관련 경고메세지가 뜬다고 하니 유저라이브러리처럼 필요할때마다 삽입하는것도 괜찮을듯)
그런뒤에 이제는 Eclipse의 플러그인 중 Log4E를 이용하여 Log4J를 사용해 볼께요.
(플러그인은 Eclipse의 업데이트 메뉴를 이용하여 http://log4e.jayefem.de/update 로 다운받으세요. Pro버전은 45일간 무료, Pro버전이 아닌것을 사용해도 무방)
먼저 단순하게 Hello World를 찍어내는 클래스를 만들어보죠.
========================================================
public class Hello
{
public static void main(String argv[])
{
System.out.println("Hello world.");
System.out.println("What a beatiful day.");
}
}
========================================================
이제 저 소스에서 Log4J를 이용해보도록 하죠. 우선 마우스를 아무곳에 가져다대고 오른쪽버튼 클릭
그곳에서 Log4E->Declare Logger를 선택하면
========================================================
import org.apache.log4j.Logger;
public class Hello
{
private static final Logger logger = Logger.getLogger(Hello.class);
public static void main(String argv[]) {
System.out.println("Hello world.");
System.out.println("What a beatiful day.");
}
}
========================================================
이렇게 logger가 생성 됩니다. 다시 여기서 마우스 오른쪽 클릭후 Log4E->Inserts Log Statements for This Class를 선택하게 되면 클래스의 처음과 마지막에 로깅문이 추가됩니다.
========================================================
import org.apache.log4j.Logger;
public class Hello
{
private static final Logger logger = Logger.getLogger(Hello.class);
public static void main(String argv[])
{
if (logger.isDebugEnabled())
{
logger.debug("main(String) - start");
}
System.out.println("Hello world.");
System.out.println("What a beatiful day.");
if (logger.isDebugEnabled())
{
logger.debug("main(String) - end");
}
}
}
========================================================
선택에 따라서 메소드에만 혹은 커서가 위치한 곳에만 로깅문 삽입이 가능하네요.
(debug문이 if(logger.isDebugEnabled())문 안쪽에 위치하지 않기를 원한다면 Log4E 옵션의 Profile->Statements 부분의 Embed isDebugEnabled() statements 부분의 체크를 해제바람)
이제 System.out 문을 이용하여 디버그하였던 구문들을 전부 로깅문으로 바꿔보죠.
마우스 오른쪽 버튼을 눌러서 Log4E->Replace System.out's For This Class를 선택해보세요.
========================================================
import org.apache.log4j.Logger;
public class Hello
{
private static final Logger logger = Logger.getLogger(Hello.class);
public static void main(String argv[])
{
if (logger.isDebugEnabled())
{
logger.debug("main(String) - start");
}
logger.debug("Hello world.");
logger.debug("What a beatiful day.");
if (logger.isDebugEnabled())
{
logger.debug("main(String) - end");
}
}
}
========================================================
System.out.println구문이 logger.debug로 바뀐것을 보실수 있네요.
(if문이 제거된 것은 위에 쓴것처럼 옵션을 조정하였음)
저 상태에서 컴파일한뒤 실행해보면 콘솔창에는
==========================================================
2005-09-01 15:28:55,418 [main] DEBUG Hello - main(String) - start
2005-09-01 15:28:55,428 [main] DEBUG Hello - main(String) - Hello world.
2005-09-01 15:28:55,428 [main] DEBUG Hello - main(String) - What a beatiful day.
2005-09-01 15:28:55,428 [main] DEBUG Hello - main(String) - end
==========================================================
와 같이 뜨게 됩니다.
이제 이 로그내용을 파일로 저장 해보도록 하죠.
아래의 내용을 log4j.properties라는 이름으로 Hello.java가 들어있는 폴더안에 같이 넣습니다.
(Eclipse의 Property Editor를 이용하여 작성하세요.)
===========================================================
######## log4j.properties ########
####################################
# Categories & Levels
####################################
log4j.rootCategory=DEBUG, FileApp, ConApp
####################################
# Appender
####################################
# ConApp is set to be a ConsoleAppender
log4j.appender.ConApp=org.apache.log4j.ConsoleAppender
# ConApp use PatterLayout.
log4j.appender.ConApp.layout=org.apache.log4j.PatternLayout
# Define Pattern
log4j.appender.ConApp.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# FileApp is to create log-file using RollingFileAppender
log4j.appender.FileApp=org.apache.log4j.RollingFileAppender
log4j.appender.FileApp.File=./MyLog.log
log4j.appender.FileApp.MaxFileSize=500KB
# Keep One Backup File
log4j.appender.FileApp.MaxBackupIndex=1
log4j.appender.FileApp.layout=org.apache.log4j.PatternLayout
log4j.appender.FileApp.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
===========================================================
이상과 같이 기록후 저장한뒤에 다시 실행해 보세요.
그러면 해당 프로젝트가 위치하는 폴더의 루트에 MyLog.log라는 파일이 생성되어있을거예요.
만약 로그메세지중에
===============================================================
log4j:WARN No appenders could be found for logger (해당클래스이름).
log4j:WARN Please initialize the log4j system properly.
===============================================================
이런것이 나온다면, 제 나름대로 분석해본 결과 2가지의 경우더군요.
1. 클래스가 디폴트패키지가 아닌 유저가 지정한 패키지안에 있을경우.
2. 디폴트 패키지인데도 발생하는 경우.
1번의 경우 단순히 log4j.properties파일을 디폴트패키지안에 넣으면 되더군요.
2번의 경우에는 약간 귀찮지만 클래스 파일의 내용에 아래의 구문을 추가합니다.
========================================================
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Hello
{
private static final Logger logger = Logger.getLogger(Hello.class);
public static void main(String argv[])
{
PropertyConfigurator.configure("해당log4j.properties가 위치한 절대경로명지정");
// ex} PropertyConfigurator.configure("C:\\Test\\log4j.properties");
if (logger.isDebugEnabled())
{
logger.debug("main(String) - start");
}
logger.debug("Hello world.");
logger.debug("What a beatiful day.");
if (logger.isDebugEnabled())
{
logger.debug("main(String) - end");
}
}
}
========================================================
위와 같이 한다면 아마 대부분은 문제 해결될 거라고 보네요.
(참조 웹페이지&블로그)
1. http://blog.empas.com/jutanme/4967864
2. http://tong.nate.com/minijava/886534
3. http://log4e.jayefem.de/index.php/Log4E:FAQ (log4j.properties파일작성시 참조)
[ 출처 :: http://blog.naver.com/cds2363.do?Redirect=Log&logNo=100016800156 ]
'언어' 카테고리의 다른 글
[vb] 숫자만 입력 가능하게 edit box (0) | 2007.05.03 |
---|---|
getParameter아 getAttribute의 차이점 (0) | 2007.04.27 |
자바 int형을 String 형으로 강제 형변환.... (0) | 2007.04.26 |
jsp 에서 디버깅 하기....... (0) | 2007.04.25 |
Eclipse 에서 ve 설치하기 (0) | 2006.11.14 |