티스토리 뷰

1. 비정상적인 상황에서 남기는 로그.
비정상 적인 상황을 만든 값들과, 주변 정보를 모두 기록하도록 한다.
이런 경우는 무조건 로그를 남겨야 한다. 그래야 기록된 정보를 토대로 발생한 원인을 추적해 수정하기 쉬워진다.

로그를 남기고 처리를 멈추었을 때, 해당 처리가 요청 되기 전으로 모든 상황을 되돌려야 한다.

복원을 수동으로 하려는 것은 좋지 않다. 만들기도 어렵고 모든 상황마다 만드는 것은 시스템을 복잡하게 만든다.

그래서 throw로 예외를 발생시키고, 스택 되감기 하는 것이 더 좋은 선택이 되기도 한다.

물론 그렇게 하기 위해서는 소멸자에서 예외가 발생하지 않도록 하고, 생성자에서 예외가 발생했을 때도 메모리가 새지 않도록 하는 것을 잊지 말아야 할 것이다.

2. 비정상적인 입력
서버라면 클라이언트의 패킷일테고,
클라이언트라면 사용자의 스트링이나 키 입력과 같은 것을 말한다.

클라이언트라면 늘 로그를 남기는 것이 좋고, 서버라면 매번 해당 로그를 남기기 보다는 해당 비정상 입력이 있었다는 것 정도만 알리는 것이 좋다.

만약 지속적으로 로그를 남기려면 해당 유저와의 커넥션을 끊는 것이 좋다. 로그만 남기고 커넥션을 끊지 않는다면 너무 많은 로그를 남기게 되기 때문이다. (일정량 이상의 반복 동작시 접속을 끊는 방법도 있음)

3. 일반적인 처리.
사용자가 어떤 일을 하고 있는지, 어떤 상태인지에 대한 로그를 모두 기록하면 좋겠지만, 그렇게 하기엔 용량이 너무 많다는 단점이 있다.

그렇기 때문에 평소에는 해당 기능에 대한 로그를 꺼두었다가, 비정상 적인 동작이 발생했을 때 해당 기능에 대한 로그를 On시켜 기록하도록 한다거나 하는 장치를 마련해두는 것이 좋다.

일반적으로 파일로 저장하는 속도가 로그에서의 부하로써 작용하기 때문에, 메모리에 해당 정보를 들고 있다가, 문제가 발생했을때 기록을 남기는 방법도 유용하다.

'Software Engineering > Knowhow' 카테고리의 다른 글

서버 프로그래밍 핵심 정리  (0) 2013.01.26
문제 해결 노트  (0) 2009.02.03
서버 프로그래밍시 유의점  (0) 2008.01.14
패치의 악몽을 겪지 않기 위해  (0) 2008.01.14
클라이언트를 믿지 말자.  (0) 2008.01.14
댓글