Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / test / doc / html / boost_test / test_output / logging_api / log_ct_output_stream_redirection.html
1 <html>
2 <head>
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">
11 </head>
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>
20 </tr></table>
21 <hr>
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>
24 </div>
25 <div class="section">
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>
30 <p>
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:
34         </p>
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">&amp;</span> <span class="special">);</span>
36 </pre>
37 <p>
38           or for a particular log format:
39         </p>
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">&amp;</span> <span class="special">);</span>
41 </pre>
42 <div class="tip"><table border="0" summary="Tip">
43 <tr>
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>
46 </tr>
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>
50             for more details
51           </p></td></tr>
52 </table></div>
53 <p>
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.
57         </p>
58 <div class="warning"><table border="0" summary="Warning">
59 <tr>
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>
62 </tr>
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
66             references access
67           </p></td></tr>
68 </table></div>
69 <h6>
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>
73         </h6>
74 <div class="informaltable"><table class="table">
75 <colgroup><col></colgroup>
76 <thead><tr><th>
77                   <p>
78                     Code
79                   </p>
80                 </th></tr></thead>
81 <tbody><tr><td>
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">&lt;</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">&gt;</span>
84 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">fstream</span><span class="special">&gt;</span>
85
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>
95
96 <span class="identifier">BOOST_TEST_GLOBAL_CONFIGURATION</span><span class="special">(</span> <span class="identifier">MyConfig</span> <span class="special">);</span>
97
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>
101 </pre>
102                 </td></tr></tbody>
103 </table></div>
104 <div class="informaltable"><table class="table">
105 <colgroup><col></colgroup>
106 <thead><tr><th>
107                   <p>
108                     Output
109                   </p>
110                 </th></tr></thead>
111 <tbody><tr><td>
112 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">example</span>
113
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">&gt;</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>
118 </pre>
119                 </td></tr></tbody>
120 </table></div>
121 </div>
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 &#169; 2001-2019 Boost.Test
125       contributors<p>
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>)
128       </p>
129 </div></td>
130 </tr></table>
131 <hr>
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>
134 </div>
135 </body>
136 </html>