2017-02-21 8 views
0

부스트 로깅 핵심 싱글 톤을 강제로 삭제할 수 있습니까? 다음을 통해 액세스 할 수 있습니다.강제 종료 로깅 코어 로깅?

로깅 코어에 대한 공유 포인터를 반환합니다. 그러나 응용 프로그램을 닫기 전에 명시 적으로 종료/할당 해제해야합니다. dll 등의 파일을 닫으십시오.

이게 가능합니까?

답변

1

아니요, 싱글 톤은 응용 프로그램 종료시 파괴됩니다. 그러나 당신이 성취하고자하는 바에 따라 특정 자원을 공개 할 수 있습니다. 예를 들어, remove_all_sinks으로 전화하면 다른 곳에서 참조되지 않는 한 모든 싱크를 해제 할 수 있습니다.

+0

감사합니다. Andrey에서 chiming했습니다. remove_all_sinks가 도움이되지 않는 것 같습니다. 플러그인에서 로그를 사용하고 있는데 내 플러그인을 언로드하면 부스트 로그 dll이 분리 된 것처럼 보입니다. 그러면 부스트 스레드 lib에서 부스트 로그의 메모리에 액세스하려고합니다. 명시 적으로 플러시를 호출하고 플러그인 언로드의 모든 싱크를 제거하지만 도움이되지 않습니다. 부스트 로그 만 부스트 스레드 lib를 사용하고 있습니다. – JeffV

+0

1. Boost.Log는 다양한 정적 데이터 및 코드에 대한 참조를 내부적으로 저장하기 때문에 플러그인 언로드를 지원하지 않습니다. 라이브러리가 언로드되면 이러한 참조가 매달리게됩니다. 싱크를 비우거나 제거한다고해서 완전히 수정되지는 않습니다. 2. Boost.Log는 비동기 로깅이 사용될 때만 자체 스레드를 생성하며 싱크가 파괴되면 해당 스레드가 조인됩니다. 그래서'remove_all_sinks'가 반환 된 후에 Boost.Log의 스레드가 활성화되어서는 안됩니다. 여전히 활성화 된 경우, 재판과 역 추적으로 티켓을 만드십시오. –

+0

고마워, @ andrey-semashev. 이 정보는 매우 유용합니다. – JeffV