프로그래밍/Java
자바 로그 관련...
jonelove71
2009. 8. 6. 19:29
1. 로그 관련 성능
다음코드는 로그레벨에 관계없이 String 객체의 값을 연결하는 + 연산이 실행된다.
logger.warn("blar blar. some="+some+". other="+other+".and another"+another);
+연산은 오직 로그를 위한 것이고 warn() 메소드는 실제 로그레벨이 warn미만일 경우에만
전달된 값을 로그에 남긴다. 만약 로그레벨이 warn보다 크다면 결과적으로 필요없는 연산을 하게 된 것이다. 아쉽게도 자바에서는 이를 피할수 있는 근본적인 방법이 없다. 다음과 같이 logger의 로그 메소드를 호출하기 전에 로그 레벨을 파악해 불필요한 연산을 피해야 한다.
logger.isWarnEnabled(){
logger.warn("...");
}
대부분의 로그 프레임워크는 이와 같은 로그레벨을 확인하기 위한 방법을 제공하고 있다.
2. track stack을 String 으로 받기
Writer writer=new StringWriter();
e.printStackTrace(new PrintWriter(writer));
String stackTrace=writer.toString();
3.로그레벨에 따른 쓰임새
DEBUG : 디버깅을 위한 목적이며 평상시라면 보이지 않을 내용이다. 자세할 수록 좋다.
INFO : 관리자에게 정보를 제공한다. 버그와 관계없는 내용이다.
WARN : 뭔가 잘못됐다는 것을 나타낸다. 이경우 비정상적인 상황은 발생했지만 정상적인 상황으로 처리했다는 것을 의미한다.
ERROR : 시스템 운영에 문제가 있을 경우다. 예외를 처리하지 못하고 로그로 남기는 경우가 여기에 속한다.
FATAL : 시스템 운영조차 불가능한 경우다. 로그조차 남기지 못하기도 한다.
출처 : 마소 2009년 07월호
대부분의 로그 프레임워크는 이와 같은 로그레벨을 확인하기 위한 방법을 제공하고 있다.
2. track stack을 String 으로 받기
Writer writer=new StringWriter();
e.printStackTrace(new PrintWriter(writer));
String stackTrace=writer.toString();
3.로그레벨에 따른 쓰임새
DEBUG : 디버깅을 위한 목적이며 평상시라면 보이지 않을 내용이다. 자세할 수록 좋다.
INFO : 관리자에게 정보를 제공한다. 버그와 관계없는 내용이다.
WARN : 뭔가 잘못됐다는 것을 나타낸다. 이경우 비정상적인 상황은 발생했지만 정상적인 상황으로 처리했다는 것을 의미한다.
ERROR : 시스템 운영에 문제가 있을 경우다. 예외를 처리하지 못하고 로그로 남기는 경우가 여기에 속한다.
FATAL : 시스템 운영조차 불가능한 경우다. 로그조차 남기지 못하기도 한다.
출처 : 마소 2009년 07월호