StackTrace를 문자열로 변환
JAVA
2020. 6. 21. 19:57
Exception이 발생하면 StackTrace의 내용은 내가 만든 웹어플리케이션 로그에 출력되는 게 아니라 WAS의 로그에 출력된다.
예를 들어 tomcat이라면 logs/board.log에 남는게 아니라 catalina.out에 남게 된다.
본래 목적은 내가 개발하는 제품이 trace내용을 잡아서 별도의 파일로 남기거나 다른 서버로 전송하기 위함이었다.
어디에 활용할 수 있을까 생각해 보니
한 WAS에 웹어플리케이션이 복수개 올라가 있는 상황에서
어떤 어플리케이션에서 발생했는지 구분하고 싶다면 아래와 같은 방법을 사용하면 좋을 것 같다.
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("boardDao")
public class BoardDao {
private final static Logger logger = LoggerFactory.getLogger(BoardDao.class);
@Autowired
SqlSession sqlSession;
public List<BoardDto> getSelectList() {
try {
return sqlSession.selectList("board.selectList");
} catch(Exception e) {
//e.printStackTrace();
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
logger.error(sw.toString());
}
return null;
}
}
'JAVA' 카테고리의 다른 글
Eclipse Ant 'Class not found' error (1) | 2018.12.20 |
---|