3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Log output stream redirection</title>
5 <link rel="stylesheet" href="../../../boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../../index.html" title="Boost.Test">
8 <link rel="up" href="../logging_api.html" title="Logging API">
9 <link rel="prev" href="../logging_api.html" title="Logging API">
10 <link rel="next" href="log_ct_log_level.html" title="Log level configuration">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="../logging_api.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../logging_api.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="log_ct_log_level.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h4 class="title">
27 <a name="boost_test.test_output.logging_api.log_ct_output_stream_redirection"></a><a class="link" href="log_ct_output_stream_redirection.html" title="Log output stream redirection">Log
28 output stream redirection</a>
29 </h4></div></div></div>
31 If you want to redirect the test log output stream into something different
32 from the logger default output stream (usually <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span></code>,
33 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span></code> or a file), use the following interface:
35 <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">unit_test_log</span><span class="special">.</span><span class="identifier">set_stream</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="special">);</span>
38 or for a particular log format:
40 <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">unit_test_log</span><span class="special">.</span><span class="identifier">set_stream</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">output_format</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="special">);</span>
42 <div class="tip"><table border="0" summary="Tip">
44 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../../doc/src/images/tip.png"></td>
45 <th align="left">Tip</th>
47 <tr><td align="left" valign="top"><p>
48 See <code class="computeroutput"><a class="link" href="../../../boost/unit_test/unit_test_log_t.html#idm46279112664176-bb">boost::unit_test::unit_test_log_t::set_stream</a></code>
49 and <code class="computeroutput"><a class="link" href="../../../header/boost/test/detail/global_typedef_hpp.html#boost.unit_test.output_format">boost::unit_test::output_format</a></code>
54 You can reset the output stream at any time both during the test module
55 initialization and from within test cases. There are no limitations on
56 number of output stream resets neither.
58 <div class="warning"><table border="0" summary="Warning">
60 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../doc/src/images/warning.png"></td>
61 <th align="left">Warning</th>
63 <tr><td align="left" valign="top"><p>
64 If you redirect test log output stream from global fixture setup, you
65 are <span class="bold"><strong>required</strong></span> to reset it back to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span></code> during teardown to prevent dangling
70 <a name="boost_test.test_output.logging_api.log_ct_output_stream_redirection.h0"></a>
71 <span class="phrase"><a name="boost_test.test_output.logging_api.log_ct_output_stream_redirection.example_descr"></a></span><a class="link" href="log_ct_output_stream_redirection.html#boost_test.test_output.logging_api.log_ct_output_stream_redirection.example_descr">Example:
72 Compile-time log output redirection</a>
74 <div class="informaltable"><table class="table">
75 <colgroup><col></colgroup>
82 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">example</span>
83 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
84 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">fstream</span><span class="special">></span>
86 <span class="keyword">struct</span> <span class="identifier">MyConfig</span> <span class="special">{</span>
87 <span class="identifier">MyConfig</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">test_log</span><span class="special">(</span> <span class="string">"example.log"</span> <span class="special">)</span> <span class="special">{</span>
88 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">unit_test_log</span><span class="special">.</span><span class="identifier">set_stream</span><span class="special">(</span> <span class="identifier">test_log</span> <span class="special">);</span>
89 <span class="special">}</span>
90 <span class="special">~</span><span class="identifier">MyConfig</span><span class="special">()</span> <span class="special">{</span>
91 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">unit_test_log</span><span class="special">.</span><span class="identifier">set_stream</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">);</span>
92 <span class="special">}</span>
93 <span class="identifier">std</span><span class="special">::</span><span class="identifier">ofstream</span> <span class="identifier">test_log</span><span class="special">;</span>
94 <span class="special">};</span>
96 <span class="identifier">BOOST_TEST_GLOBAL_CONFIGURATION</span><span class="special">(</span> <span class="identifier">MyConfig</span> <span class="special">);</span>
98 <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span> <span class="identifier">test_case</span> <span class="special">)</span> <span class="special">{</span>
99 <span class="identifier">BOOST_TEST</span><span class="special">(</span> <span class="keyword">false</span> <span class="special">);</span>
100 <span class="special">}</span>
104 <div class="informaltable"><table class="table">
105 <colgroup><col></colgroup>
112 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">></span> <span class="identifier">example</span>
114 <span class="special">***</span> <span class="number">1</span> <span class="identifier">failures</span> <span class="identifier">is</span> <span class="identifier">detected</span> <span class="identifier">in</span> <span class="identifier">test</span> <span class="identifier">suite</span> <span class="string">"example"</span>
115 <span class="special">></span> <span class="identifier">cat</span> <span class="identifier">example</span><span class="special">.</span><span class="identifier">log</span>
116 <span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
117 <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">26</span><span class="special">):</span> <span class="identifier">error</span> <span class="identifier">in</span> <span class="string">"test_case"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">false</span> <span class="identifier">failed</span>
122 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
123 <td align="left"></td>
124 <td align="right"><div class="copyright-footer">Copyright © 2001-2019 Boost.Test
126 Distributed under the Boost Software License, Version 1.0. (See accompanying
127 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
132 <div class="spirit-nav">
133 <a accesskey="p" href="../logging_api.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../logging_api.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="log_ct_log_level.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>