이 무한한 우주 공간의 영원한 침묵이 나를 두렵게 한다. -파스칼
* 몇몇 서버 또는 클라이언트를 만들때, ACE관련 로그 기록들은 화일로 저장하고자 할 때가 있습니다. (실제로 표준출력으로 뽑는 거 보다 화일로 저장하는 것이 부하도 덜 먹습니다) 이럴 때에는 다음과 같이 합니다. 일단 전역에 다음과 같이 선언되어있다고 가정하면,
이제 ACE_TRACE(), ACE_DEBUG(), ACE_ERROR()에 대한 출력이 모두 myoutput.txt에 담기게 됩니다.
#include "ace/Log_Msg.h"
#include "ace/streams.h"
static std::ofstream log_output_("myoutput.txt");
초기화부분(main()같은 곳)에 다음과 같이 실행해줍니다.
// CRADLE 에 대한 로그를 cradle.out.txt에 출력되도록 합니다. ACE_LOG_MSG->msg_ostream(&log_output_, 0); // 0으로 설정하면 ACE_Log_Msg 객체가 소멸할때 ofstream을 닫지 않습니다. 1은 그 반대. ACE_LOG_MSG->set_flags(ACE_Log_Msg::OSTREAM); ACE_LOG_MSG->clr_flags(ACE_Log_Msg::STDERR); ACE_LOG_MSG->clr_flags(ACE_Log_Msg::LOGGER);이렇게 하면 ofstream을 통하여 기록이 되도록 설정합니다. 주의! ACE_Log_Msg 클래스는 ACE_Log_Msg::LOGGER을 기본적으로 켜놓은 상태로 실행하는데, 클라이언트 로깅서버를 연결하지 않았다면 기본출력(stdout)을 사용하며 출력하므로 맨 마지막에서 ACE_Log_Msg::LOGGER을 꺼주지 않으면 콘솔화면(stdout)과 화일에 이중으로 출력되게 됩니다. 그러므로 꼭 옵션을 꺼주는 것이 좋습니다. (클라이언트 로깅서버를 사용할 경우라면 물론 다른 처리가 필요없겠지만, 일반적인 네트워크 제품에서 ACE 클라이언트 로깅서버를 사용하지 않을 경우에는 이 방법을 사용해야합니다.)
이제 ACE_TRACE(), ACE_DEBUG(), ACE_ERROR()에 대한 출력이 모두 myoutput.txt에 담기게 됩니다.









![[http]](/wiki/imgs/http.png)
