2016-11-04 8 views
0

BOOST_LOG_TRIVIAL에서 사용하는 기본 스트림 인스턴스에 액세스 할 수 있습니까?BOOST_LOG_TRIVIAL에서 사용하는 스트림 인스턴스에 액세스 할 수 있습니까?

내가 (파일 및 표준 : 막힘에 쓰는 내가 구성한) BOOST_LOG_TRIVIAL를 사용 BOOST 단위 테스트 프레임 워크 쓰기 출력을하기 위해 노력하고있어

자동 & log_stream = ??? // BOOST_LOG_TRIVIAL 스트림 인스턴스 boost :: unit_test :: unit_test_log.instance(). set_stream (log_stream);

답변

1

BOOST_LOG_TRIVIAL에서 사용하는 기본 스트림 인스턴스에 액세스 할 수 있습니까?

아니요. 내부적으로 싱크를 직접 구성하지 않는 한 Boost.Log의 기본 싱크는 BOOST_LOG_TRIVIAL에 의해 사용되며 스트림을 사용하지 않습니다.

Boost.Test를 Boost.Log와 통합하는 가장 좋은 방법은 자신의 스트림 버퍼 (클래스는 std::streambuf에서 파생 됨)를 구현하는 것입니다. 버퍼는 Boost.Test의 출력을 별도의 로그 레코드 (예 : 개행 문자로 분리)로 변환하고 BOOST_LOG_TRIVIAL 또는 다른 방법을 통해 Boost.Log로 레코드를 전달해야합니다. 그런 다음 스트림 버퍼를 참조하여 std::ostream 객체를 만들고 Boost.Test에 set_stream으로 전달합니다.

+0

고마워요. 안드레이, 내 자신의 프록시를 구현하는 것은 나의 첫 번째 생각이었고, 나는 이것이 해결책이 될 수있는 일반적인 경우일지도 모른다고 기대했습니다. 그렇지 않은 것 같습니다. 싱크를 사용하는 설명서에서 간략하게 보았던 것에서도 해결책이 될 수 있으며 내 자신의 프록시는 필요하지 않습니다. 싱크대를 더 조사 할 시간이 있는지 확실하지 않습니다. –