2013-10-15 2 views
0

저는 Windows 7에 콘솔 애플리케이션의 v1.54에서 boost :: log를 사용하고 있습니다. 회전과 함께 add_file_log()를 사용하고 있는데, 이는 main() 함수가 종료되는 한 정상적으로 작동합니다. 그러나 응용 프로그램이 외부에서 PowerShell CloseMainWindow()로 종료되면 로그 파일이 작성되지 않습니다.boost :: log add_file_log 앱이 CTRL_CLOSE_EVENT를 종료하면 쓰지 않습니다.

SetConsoleCtrlHandler()를 사용하여 Windows 제어 처리기를 설정하고 CTRL_CLOSE_EVENT을 (를) 트랩 할 수 있지만 부스트 :: 로그 메서드가 있는지 모르겠지만 로그 파일을 강제로 이전에 쓰도록 호출 할 수 있습니다. 앱이 종료되었습니다. 누구든지이 솔루션을 가지고 있습니까?

감사합니다, 당신이보고 할 수 있습니다

Rob 

답변

1

두 가지. 다음은 내 경험에 근거한 것입니다.

1) 로그 파일은 있지만 비어 있습니다. 이 경우 로그 메시지가 생성 될 때 auto_flush를 사용하여 로그를 디스크로 비 웁니다. CTRL_CLOSE_EVENT가 발생할 때 플러시 할 로그 메시지가 충분하지 않으면 빈 로그로 끝날 수 있습니다.

2) 로그 파일은 종료되었지만 생각하지 않았습니다. 이 경우 로그 파일이 대상 디렉토리와 동일한 디렉토리에 작성되었는지 확인하십시오. 대상 디렉토리는 싱크가 닫힐 때 로그 파일을 수집합니다. 키워드 file_name이 파일 이름으로 만 설정된 경우 대상 디렉토리가 아닌 작업 디렉토리에 작성됩니다. 응용 프로그램이 싱크를 닫지 않고 종료되면 파일은 대상 디렉토리로 이동되지 않습니다.

HTH,