• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Changelog</title>
5<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../index.html" title="Chapter 1. Boost.Log v2">
8<link rel="up" href="../index.html" title="Chapter 1. Boost.Log v2">
9<link rel="prev" href="../boost/log/current_scope.html" title="Function current_scope">
10<link rel="next" href="todo.html" title="TODO in future releases">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td></tr></table>
14<hr>
15<div class="spirit-nav">
16<a accesskey="p" href="../boost/log/current_scope.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="todo.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
17</div>
18<div class="section">
19<div class="titlepage"><div><div><h2 class="title" style="clear: both">
20<a name="log.changelog"></a><a class="link" href="changelog.html" title="Changelog">Changelog</a>
21</h2></div></div></div>
22<h4>
23<a name="log.changelog.h0"></a>
24      <span class="phrase"><a name="log.changelog.2_19__boost_1_74"></a></span><a class="link" href="changelog.html#log.changelog.2_19__boost_1_74">2.19,
25      Boost 1.74</a>
26    </h4>
27<p>
28      <span class="bold"><strong>Bug fixes:</strong></span>
29    </p>
30<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
31          The <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.syslog" title="Syslog backend">syslog</a> sink
32          backend now verifies the IP version of the local and target addresses set
33          by user. The addresses must have the same IP version as was specified in
34          the <code class="computeroutput"><span class="identifier">ip_version</span></code> named parameter
35          on the sink backend construction (by default, IPv4 is assumed). When an
36          address is obtained as a result of host name resolution, only addresses
37          with matching IP version are considered. (<a href="https://github.com/boostorg/log/issues/119" target="_top">GH#119</a>)
38        </li></ul></div>
39<p>
40      <span class="bold"><strong>New Features:</strong></span>
41    </p>
42<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
43<li class="listitem">
44          Move constructors and assignment operators of various components were marked
45          <code class="computeroutput"><span class="keyword">noexcept</span></code>.
46        </li>
47<li class="listitem">
48          Added a new <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.range" title="Range manipulator"><code class="computeroutput"><span class="identifier">range_manip</span></code></a> stream manipulator
49          that can be used for outputting elements of a range, optionally separated
50          by a delimiter.
51        </li>
52<li class="listitem">
53          Added a new <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.tuple" title="Tuple manipulator"><code class="computeroutput"><span class="identifier">tuple_manip</span></code></a> stream manipulator
54          that can be used for outputting elements of a tuple or any other heterogeneous
55          sequence, optionally separated by a delimiter.
56        </li>
57<li class="listitem">
58          Added a new <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.optional" title="Optional manipulator"><code class="computeroutput"><span class="identifier">optional_manip</span></code></a> stream manipulator
59          that can be used for outputting optionally present values.
60        </li>
61</ul></div>
62<h4>
63<a name="log.changelog.h1"></a>
64      <span class="phrase"><a name="log.changelog.2_18__boost_1_73"></a></span><a class="link" href="changelog.html#log.changelog.2_18__boost_1_73">2.18,
65      Boost 1.73</a>
66    </h4>
67<p>
68      <span class="bold"><strong>New Features:</strong></span>
69    </p>
70<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
71<li class="listitem">
72          Default sink used in trivial logging, when no sinks are registered in the
73          logging core, now automatically flushes output after each log record. (<a href="https://github.com/boostorg/log/issues/103" target="_top">GH#103</a>)
74        </li>
75<li class="listitem">
76          <code class="computeroutput"><span class="identifier">core</span><span class="special">::</span><span class="identifier">flush</span></code> now performs a flush on the default
77          sink used for trivial logging, when no sinks are registered.
78        </li>
79</ul></div>
80<p>
81      <span class="bold"><strong>Bug fixes:</strong></span>
82    </p>
83<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
84<li class="listitem">
85          Added a workaround for some syslog API implementations (e.g. glibc), which
86          do not save the application identification string in <code class="computeroutput"><span class="identifier">openlog</span></code>
87          call. Such implementations could access already freed memory on each <code class="computeroutput"><span class="identifier">syslog</span></code> call, resulting in undefined behavior.
88          (<a href="https://github.com/boostorg/log/issues/97" target="_top">GH#97</a>)
89        </li>
90<li class="listitem">
91          Fixed that log file rotation on a specific day of month (e.g. <code class="computeroutput"><span class="identifier">rotation_at_time_point</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">gregorian</span><span class="special">::</span><span class="identifier">greg_day</span><span class="special">(</span><span class="number">1</span><span class="special">))</span></code>) could
92          be silently ignored and not happen. (<a href="https://github.com/boostorg/log/issues/98" target="_top">GH#98</a>)
93        </li>
94<li class="listitem">
95          Fixed that <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend"><code class="computeroutput"><span class="identifier">text_file_backend</span></code></a><code class="computeroutput"><span class="special">::</span><span class="identifier">rotate_file</span></code>
96          could throw if there were no log records written yet and target file name
97          pattern was set. The method would attempt to rename a missing file, which
98          would result in an exception. Note that <code class="computeroutput"><span class="identifier">rotate_file</span></code>
99          may still throw because of a missing log file, if the file being rotated
100          is removed by a third party.
101        </li>
102<li class="listitem">
103          Ported various components of the library to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span></code>
104          to improve compatibility with C++20 allocators.
105        </li>
106<li class="listitem">
107          Fixed compilation errors when building in MSYS2 Cygwin environment. (<a href="https://github.com/boostorg/log/issues/102" target="_top">GH#102</a>)
108        </li>
109</ul></div>
110<h4>
111<a name="log.changelog.h2"></a>
112      <span class="phrase"><a name="log.changelog.2_17__boost_1_71"></a></span><a class="link" href="changelog.html#log.changelog.2_17__boost_1_71">2.17,
113      Boost 1.71</a>
114    </h4>
115<p>
116      <span class="bold"><strong>New features:</strong></span>
117    </p>
118<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
119<li class="listitem">
120          Improved support for C++17 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span></code>
121          in <code class="computeroutput"><a class="link" href="../boost/log/basic_formatting_ostream.html" title="Class template basic_formatting_ostream">basic_formatting_ostream</a></code>.
122          The string view can now participate in character code conversion on output.
123        </li>
124<li class="listitem">
125          Added <code class="computeroutput"><span class="identifier">auto_newline</span></code> <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.auto_newline" title="Automatic newline insertion">formatter</a>
126          and <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.auto_newline" title="Automatic newline insertion">stream
127          manipulator</a>. It can be used to ensure that formatted output always
128          ends with a newline while avoiding duplicate newlines.
129        </li>
130<li class="listitem">
131          In the <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_ostream" title="Text stream backend">output stream</a>,
132          <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text file</a> and
133          <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_multifile" title="Text multi-file backend">text multi-file</a>
134          sink backends added support for configuring behavior with regard to appending
135          a trailing newline to every formatted log record. The user can specify
136          a value of the <code class="computeroutput"><a class="link" href="../sinks.html#boost.log.sinks.auto_newline_mode">auto_newline_mode</a></code> enum either
137          in the <code class="computeroutput"><span class="identifier">auto_newline_mode</span></code>
138          named parameter of the backend constructor or by calling the <code class="computeroutput"><span class="identifier">set_auto_newline_mode</span></code> method on the backend
139          post-construction. The <code class="computeroutput"><span class="identifier">auto_newline_mode</span></code>
140          named parameter is also supported in the <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.convenience" title="Convenience functions">convenience
141          functions</a> for initializing sinks. When initializing from <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.settings" title="Library initialization from a settings container">settings</a>
142          or a config file, the behavior is controlled by the new "AutoNewline"
143          parameter of the sink.
144        </li>
145</ul></div>
146<div class="note"><table border="0" summary="Note">
147<tr>
148<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
149<th align="left">Note</th>
150</tr>
151<tr><td align="left" valign="top"><p>
152        The default behavior with regard to trailing newlines has changed slightly
153        compared to the previous Boost.Log releases. The backends will now only add
154        a trailing newline if there isn't one in the formatted log message string
155        already. In previous releases a newline was added unconditionally. In general,
156        users are advised to configure their formatters so that the trailing newline
157        is added there, if needed (e.g. by using <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.auto_newline" title="Automatic newline insertion"><code class="computeroutput"><span class="identifier">auto_newline</span></code></a> formatter), and disable
158        the automatic trailing newline insertion in the sink backends. This feature
159        mostly exists for backward compatibility and can be considered deprecated.
160      </p></td></tr>
161</table></div>
162<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
163<li class="listitem">
164          <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_ostream" title="Text stream backend">Output stream</a>
165          and <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_multifile" title="Text multi-file backend">text multi-file</a>
166          sink backends can now be constructed with named parameters.
167        </li>
168<li class="listitem">
169          Added support for passing arbitrary function objects (as opposed to only
170          <a href="http://www.boost.org/doc/libs/release/libs/phoenix/doc/html/index.html" target="_top">Boost.Phoenix</a>
171          function objects, which were supported before) in the <code class="computeroutput"><span class="identifier">filter</span></code>
172          and <code class="computeroutput"><span class="identifier">format</span></code> named parameters
173          to sink constructors and <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.convenience" title="Convenience functions">convenience
174          functions</a> for initializing sinks. For example, it is now possible
175          to specify C++11 lambda functions directly in these parameters. (<a href="https://github.com/boostorg/log/issues/63" target="_top">GH#63</a>)
176        </li>
177<li class="listitem">
178          In the default filter and formatter factories used in <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.filter_formatter" title="Filter and formatter parsers">filter
179          and formatter parsers</a>, added support for severity level attribute
180          values of type <code class="computeroutput"><a class="link" href="reference.html#boost.log.trivial.severity_level">boost::log::trivial::severity_level</a></code>. For filters,
181          the support is limited to attributes with "Severity" name. This
182          relieves the user from having to register filter and formatter factories
183          in order to use <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">log</span><span class="special">::</span><span class="identifier">trivial</span><span class="special">::</span><span class="identifier">severity_level</span></code> with filters and formatters
184          parsed from strings or <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.settings" title="Library initialization from a settings container">settings</a>.
185          Note that any other custom severity level enums must still be <a class="link" href="extension/settings.html" title="Extending library settings support">registered</a>,
186          as before.
187        </li>
188</ul></div>
189<p>
190      <span class="bold"><strong>Bug fixes:</strong></span>
191    </p>
192<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
193<li class="listitem">
194          Fixed incorrect parsing of components of the rotated file names while scanning
195          for files in the <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text
196          file sink backend</a>. If the file name pattern ended with a placeholder
197          (for example, a file counter), the <code class="computeroutput"><span class="identifier">scan_for_files</span></code>
198          method would not find files matching that pattern in the target storage,
199          leaving them unmanaged. In particular, such files would not be deleted
200          to free target storage. (<a href="https://github.com/boostorg/log/issues/78" target="_top">GH#78</a>)
201        </li>
202<li class="listitem">
203          Updated <code class="computeroutput"><a class="link" href="../boost/log/basic_formatting_ostream.html" title="Class template basic_formatting_ostream">basic_formatting_ostream</a></code>
204          and <code class="computeroutput"><a class="link" href="../boost/log/basic_record_ostream.html" title="Class template basic_record_ostream">basic_record_ostream</a></code>
205          to make it possible to overload stream output operators for pointers to
206          user-defined types. User-defined <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;&lt;</span></code> overloads taking <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span></code> and a pointer argument
207          should now be picked up by the compiler when the pointer is being written
208          to one of Boost.Log streams. (<a href="https://github.com/boostorg/log/issues/84" target="_top">GH#84</a>)
209        </li>
210</ul></div>
211<h4>
212<a name="log.changelog.h3"></a>
213      <span class="phrase"><a name="log.changelog.2_16__boost_1_70"></a></span><a class="link" href="changelog.html#log.changelog.2_16__boost_1_70">2.16,
214      Boost 1.70</a>
215    </h4>
216<p>
217      <span class="bold"><strong>New features:</strong></span>
218    </p>
219<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
220          Added support for generating another log file name before collecting the
221          file in the <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text file
222          sink backend</a>. This allows to combine <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file.appending" title="Appending to the previously written files">appending</a>
223          to an existing log file with timestamps and file counters in log filenames,
224          and, consequently, <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file.file_collection" title="Managing rotated files">file
225          collection</a> in general. To enable this feature, one must set the
226          target file name pattern in the text file sink backend (using the <code class="computeroutput"><span class="identifier">target_file_name</span></code> named parameter, <code class="computeroutput"><span class="identifier">text_file_backend</span><span class="special">::</span><span class="identifier">set_target_file_name_pattern</span></code> method call
227          or "TargetFileName" sink parameter in the <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.settings" title="Library initialization from a settings container">settings</a>).
228          This pattern will be used to generate a new file name when the file is
229          finished writing and is about to be collected. Therefore, the original
230          (active) file name can be set to a stable pattern (e.g. "app.log")
231          so that appending to a previously written file works. Then the target file
232          name can include a timestamp or a counter (e.g. "app-2019-01-05.log"),
233          so that different rotated files don't conflict in the target storage.
234        </li></ul></div>
235<h4>
236<a name="log.changelog.h4"></a>
237      <span class="phrase"><a name="log.changelog.2_15__boost_1_69"></a></span><a class="link" href="changelog.html#log.changelog.2_15__boost_1_69">2.15,
238      Boost 1.69</a>
239    </h4>
240<p>
241      <span class="bold"><strong>General changes:</strong></span>
242    </p>
243<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
244          Updated syslog sink backend to avoid using deprecated <a href="http://www.boost.org/doc/libs/release/doc/html/boost_asio.html" target="_top">Boost.ASIO</a>
245          interfaces. (<a href="https://github.com/boostorg/log/issues/59" target="_top">GH#59</a>)
246        </li></ul></div>
247<p>
248      <span class="bold"><strong>Bug fixes:</strong></span>
249    </p>
250<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
251          Fixed a problem that could cause incorrect estimate of the total size of
252          rotated files in the target storage if the <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text
253          file sink backend</a> was writing directly into the target storage directory
254          and the log file name matched one of the old files in the storage, and
255          that file was picked as the old log file by <code class="computeroutput"><span class="identifier">file_collector</span><span class="special">::</span><span class="identifier">scan_for_files</span></code>.
256          Note that this configuration is still not fully supported and may result
257          in premature file deletion if multiple sinks write files directly into
258          the common target storage directory. It is recommended to configure sinks
259          to write log files into directories different from the target storage directory.
260        </li></ul></div>
261<h4>
262<a name="log.changelog.h5"></a>
263      <span class="phrase"><a name="log.changelog.2_14__boost_1_68"></a></span><a class="link" href="changelog.html#log.changelog.2_14__boost_1_68">2.14,
264      Boost 1.68</a>
265    </h4>
266<p>
267      <span class="bold"><strong>General changes:</strong></span>
268    </p>
269<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
270          Improved support for VxWorks. (<a href="https://github.com/boostorg/log/pull/39" target="_top">PR#39</a>)
271        </li></ul></div>
272<h4>
273<a name="log.changelog.h6"></a>
274      <span class="phrase"><a name="log.changelog.2_13__boost_1_67"></a></span><a class="link" href="changelog.html#log.changelog.2_13__boost_1_67">2.13,
275      Boost 1.67</a>
276    </h4>
277<p>
278      <span class="bold"><strong>General changes:</strong></span>
279    </p>
280<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
281<li class="listitem">
282          Updated library to use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span></code>
283          where possible to work with allocators. This should improve compatibility
284          with C++ post C++17.
285        </li>
286<li class="listitem">
287          Added documentation for the "Append" <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.settings" title="Library initialization from a settings container">config
288          file</a> parameter for "TextFile" sinks. The parameter was
289          supported previously, only the documentation was missing.
290        </li>
291</ul></div>
292<h4>
293<a name="log.changelog.h7"></a>
294      <span class="phrase"><a name="log.changelog.2_12__boost_1_66"></a></span><a class="link" href="changelog.html#log.changelog.2_12__boost_1_66">2.12,
295      Boost 1.66</a>
296    </h4>
297<p>
298      <span class="bold"><strong>Bug fixes:</strong></span>
299    </p>
300<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
301          Fixed a bug in <code class="computeroutput"><span class="identifier">file_collector</span><span class="special">::</span><span class="identifier">scan_for_files</span></code>
302          that caused zero file counter to be returned if the target directory contained
303          a file with the maximum counter value in the name. This used to cause incorrectly
304          named log files in the target directory after the user's application restart.
305        </li></ul></div>
306<h4>
307<a name="log.changelog.h8"></a>
308      <span class="phrase"><a name="log.changelog.2_11__boost_1_65"></a></span><a class="link" href="changelog.html#log.changelog.2_11__boost_1_65">2.11,
309      Boost 1.65</a>
310    </h4>
311<p>
312      <span class="bold"><strong>General changes:</strong></span>
313    </p>
314<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
315          Updated library build scripts to unify system macros configuration for
316          different platforms. In particular, this should improve compatibility with
317          Solaris.
318        </li></ul></div>
319<h4>
320<a name="log.changelog.h9"></a>
321      <span class="phrase"><a name="log.changelog.2_10__boost_1_63"></a></span><a class="link" href="changelog.html#log.changelog.2_10__boost_1_63">2.10,
322      Boost 1.63</a>
323    </h4>
324<p>
325      <span class="bold"><strong>General changes:</strong></span>
326    </p>
327<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
328          Removed the previously deprecated <code class="computeroutput"><span class="identifier">type_info_wrapper</span></code>.
329          As previously suggested, <a href="http://www.boost.org/doc/libs/release/doc/html/boost_typeindex.html" target="_top">Boost.TypeIndex</a>
330          is recommended as a replacement.
331        </li></ul></div>
332<p>
333      <span class="bold"><strong>New features:</strong></span>
334    </p>
335<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
336<li class="listitem">
337          Added a way to access the current file name from the <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text
338          file sink backend</a>. The file name can be obtained with the <code class="computeroutput"><span class="identifier">get_current_file_name</span></code> method.
339        </li>
340<li class="listitem">
341          Added a way to disable log file rotation on <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text
342          file sink backend</a> destruction, which typically happens on program
343          termination. This can be done via <code class="computeroutput"><span class="identifier">enable_final_rotation</span></code>
344          backend constructor parameter or similarly named method, or with the <code class="computeroutput"><span class="identifier">EnableFinalRotation</span></code> parameter in the
345          settings.
346        </li>
347</ul></div>
348<p>
349      <span class="bold"><strong>Bug fixes:</strong></span>
350    </p>
351<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
352<li class="listitem">
353          Fixed compilation errors for Android API prior to version 21.
354        </li>
355<li class="listitem">
356          Streaming operators now take scalar types and enums by value. This allows
357          to output static constants and bitfields directly into formatting stream
358          and record stream. (<a href="https://svn.boost.org/trac/boost/ticket/11998" target="_top">#11998</a>)
359        </li>
360<li class="listitem">
361          Fixed auto-detection of native syslog API. (<a href="https://svn.boost.org/trac/boost/ticket/12600" target="_top">#12600</a>)
362        </li>
363<li class="listitem">
364          In UDP socket based syslog backend implementation, changed the syslog message
365          format for better compliance with RFC3164.
366        </li>
367<li class="listitem">
368          File close handler installed in <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text
369          file sink backend</a> is no longer called if the file is not open yet.
370        </li>
371</ul></div>
372<h4>
373<a name="log.changelog.h10"></a>
374      <span class="phrase"><a name="log.changelog.2_9__boost_1_62"></a></span><a class="link" href="changelog.html#log.changelog.2_9__boost_1_62">2.9,
375      Boost 1.62</a>
376    </h4>
377<p>
378      <span class="bold"><strong>New features:</strong></span>
379    </p>
380<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
381<li class="listitem">
382          Added new tools for inter-process logging on a local machine. The implementation
383          includes a <a class="link" href="detailed/utilities.html#log.detailed.utilities.ipc.object_name" title="Resource name wrapper">resource
384          name wrapper</a>, an <a class="link" href="detailed/utilities.html#log.detailed.utilities.ipc.reliable_message_queue" title="Reliable message queue">inter-process
385          message queue</a> and a <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_ipc_message_queue" title="Text IPC message queue backend">sink
386          backend</a>. The new functionality is optional and can be disabled by
387          defining <a class="link" href="installation/config.html" title="Configuring and building the library"><code class="computeroutput"><span class="identifier">BOOST_LOG_WITHOUT_IPC</span></code></a>
388          macro at library build time. Thanks to Lingxi Li for the initial patch.
389        </li>
390<li class="listitem">
391          Added a new character decorator called <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.decorators.max_size" title="String length limiting decorator"><code class="computeroutput"><span class="identifier">max_size_decor</span></code></a>. The new decorator
392          allows to limit the output of its adopted formatter up to the specified
393          length. This can be useful with the new inter-process sink backend.
394        </li>
395</ul></div>
396<p>
397      <span class="bold"><strong>Bug fixes:</strong></span>
398    </p>
399<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
400          Fixed that logging streams could retain formatting settings across different
401          log records. (<a href="https://svn.boost.org/trac/boost/ticket/12178" target="_top">#12178</a>)
402        </li></ul></div>
403<h4>
404<a name="log.changelog.h11"></a>
405      <span class="phrase"><a name="log.changelog.2_8__boost_1_61"></a></span><a class="link" href="changelog.html#log.changelog.2_8__boost_1_61">2.8,
406      Boost 1.61</a>
407    </h4>
408<p>
409      <span class="bold"><strong>General changes:</strong></span>
410    </p>
411<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
412<li class="listitem">
413          The support for <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">basic_string_ref</span></code> and its specializations
414          is deprecated; users are encouraged to switch to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">basic_string_view</span></code>,
415          which is now supported for output to the formatting streams. The support
416          for <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">basic_string_ref</span></code> will be removed in future
417          releases.
418        </li>
419<li class="listitem">
420          Added support for limiting the number of stored log files in the target
421          directory of the file collector. The limit can be specified in the <code class="computeroutput"><span class="identifier">max_files</span></code> named parameter to the <code class="computeroutput"><span class="identifier">make_collector</span></code> or <code class="computeroutput"><span class="identifier">add_file_log</span></code>
422          calls or as the "MaxFiles" parameter for the sink in the settings
423          file. Thanks to Erich Keane for the patch. (<a href="https://svn.boost.org/trac/boost/ticket/8746" target="_top">#8746</a>)
424        </li>
425</ul></div>
426<p>
427      <span class="bold"><strong>Bug fixes:</strong></span>
428    </p>
429<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
430<li class="listitem">
431          Fixed various compilation problems for Windows CE.
432        </li>
433<li class="listitem">
434          Fixed compilation problems on Solaris.
435        </li>
436<li class="listitem">
437          Added a workaround for MSVC-10 and 11 generating broken code for formatters
438          in some cases. (<a href="https://svn.boost.org/trac/boost/ticket/12025" target="_top">#12025</a>)
439        </li>
440</ul></div>
441<h4>
442<a name="log.changelog.h12"></a>
443      <span class="phrase"><a name="log.changelog.2_7__boost_1_60"></a></span><a class="link" href="changelog.html#log.changelog.2_7__boost_1_60">2.7,
444      Boost 1.60</a>
445    </h4>
446<p>
447      <span class="bold"><strong>General changes:</strong></span>
448    </p>
449<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
450<li class="listitem">
451          On Windows, the configuration macro <code class="computeroutput"><span class="identifier">BOOST_LOG_USE_WINNT6_API</span></code>
452          is no longer used by the library. The target Windows version should be
453          configured by defining macro <code class="computeroutput"><span class="identifier">BOOST_USE_WINAPI_VERSION</span></code>
454          to the desired WinAPI version (e.g. 0x0501 for Windows XP). This macro
455          is used in multiple different Boost libraries besides Boost.Log.
456        </li>
457<li class="listitem">
458          The default target Windows version is now Vista on compilers with recent
459          enough Windows SDK and XP on others. The default is no longer chosen by
460          Boost.Log but by the common WinAPI submodule used by different Boost libraries.
461        </li>
462<li class="listitem">
463          Changed internal mutex type in the thread-safe queue implementation that
464          is used in asynchronous sink frontends with the <code class="computeroutput"><span class="identifier">unbounded_fifo_queue</span></code>
465          policy. The updated queue has improved performance in case of heavy thread
466          contention (hundreds and thousands of logging threads) on POSIX-compatible
467          systems.
468        </li>
469</ul></div>
470<p>
471      <span class="bold"><strong>Bug fixes:</strong></span>
472    </p>
473<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
474<li class="listitem">
475          Fixed compilation for Android using Google NDK. (<a href="https://svn.boost.org/trac/boost/ticket/11559" target="_top">#11559</a>)
476        </li>
477<li class="listitem">
478          Fixed compilation of some logging statements, where the first object to
479          be put into stream is not directly supported by <code class="computeroutput"><span class="identifier">formatting_ostream</span></code>.
480          (<a href="https://svn.boost.org/trac/boost/ticket/11549" target="_top">#11549</a>)
481        </li>
482<li class="listitem">
483          Added a workaround for Solaris Studio 12.4, which should fix the compilation
484          of <code class="computeroutput"><span class="identifier">formatting_ostream</span></code>.
485          (<a href="https://svn.boost.org/trac/boost/ticket/11545" target="_top">#11545</a>)
486        </li>
487<li class="listitem">
488          Fixed compilation when native <code class="computeroutput"><span class="keyword">wchar_t</span></code>
489          type is disabled. Added a note of discouragement to the <a class="link" href="installation/config.html" title="Configuring and building the library">configuration</a>
490          section. (<a href="https://svn.boost.org/trac/boost/ticket/11541" target="_top">#11541</a>)
491        </li>
492<li class="listitem">
493          Fixed exporting symbols from the <code class="computeroutput"><span class="identifier">boost_log_setup</span></code>
494          library on POSIX-like systems.
495        </li>
496<li class="listitem">
497          Fixed build failure on Nuxi CloudABI.
498        </li>
499<li class="listitem">
500          Fixed compilation of <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.decorators" title="Character decorators">character
501          decorators</a>.
502        </li>
503<li class="listitem">
504          Added a workaround for incorrect file name generation in <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text
505          file sink backend</a>, when the file name contains date/time placeholders.
506          (<a href="https://svn.boost.org/trac/boost/ticket/11691" target="_top">#11691</a>)
507        </li>
508</ul></div>
509<h4>
510<a name="log.changelog.h13"></a>
511      <span class="phrase"><a name="log.changelog.2_6__boost_1_59"></a></span><a class="link" href="changelog.html#log.changelog.2_6__boost_1_59">2.6,
512      Boost 1.59</a>
513    </h4>
514<p>
515      <span class="bold"><strong>General changes:</strong></span>
516    </p>
517<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
518<li class="listitem">
519          On systems with <a href="https://gcc.gnu.org/wiki/Visibility" target="_top">symbol
520          visibility</a> support (e.g. Linux) the library is now built with all
521          internal symbols hidden. API symbols still have default visibility, so
522          this shouldn't affect linking with the library.
523        </li>
524<li class="listitem">
525          <span class="bold"><strong>Breaking change:</strong></span> The library has been
526          ported to <a href="http://www.boost.org/doc/libs/release/doc/html/boost_typeindex.html" target="_top">Boost.TypeIndex</a>
527          for its underlying type info management tool. This improved library compatibility
528          with hidden symbol visibility mode on some compilers. This affected the
529          following public interfaces:
530          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
531<li class="listitem">
532                <code class="computeroutput"><span class="identifier">invalid_type</span></code> exceptions
533                thrown by the library now have <code class="computeroutput"><span class="identifier">typeindex</span><span class="special">::</span><span class="identifier">type_index</span></code>
534                attached as the description of the offending type. The type was previously
535                identified by <code class="computeroutput"><span class="identifier">type_info_wrapper</span></code>.
536              </li>
537<li class="listitem">
538                <a href="http://www.boost.org/doc/libs/release/libs/exception/doc/boost-exception.html" target="_top">Boost.Exception</a>
539                <code class="computeroutput"><span class="identifier">type_info_info</span></code> error
540                information now contains <code class="computeroutput"><span class="identifier">typeindex</span><span class="special">::</span><span class="identifier">type_index</span></code>
541                instead of <code class="computeroutput"><span class="identifier">type_info_wrapper</span></code>.
542                This is the error info that can be used to obtain the type info from
543                <code class="computeroutput"><span class="identifier">invalid_type</span></code> exceptions.
544              </li>
545<li class="listitem">
546                <code class="computeroutput"><span class="identifier">attribute_value</span><span class="special">::</span><span class="identifier">get_type</span><span class="special">()</span></code>
547                now returns <code class="computeroutput"><span class="identifier">typeindex</span><span class="special">::</span><span class="identifier">type_index</span></code>
548                instead of <code class="computeroutput"><span class="identifier">type_info_wrapper</span></code>.
549                If the <code class="computeroutput"><span class="identifier">attribute_value</span></code>
550                object is empty, the returned <code class="computeroutput"><span class="identifier">type_index</span></code>
551                is default-constructed (i.e. refers to the <code class="computeroutput"><span class="keyword">void</span></code>
552                type). User-defined attribute value implementations should be similarly
553                changed (the <code class="computeroutput"><span class="identifier">attribute_value</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">get_type</span><span class="special">()</span></code> virtual method now also returns
554                <code class="computeroutput"><span class="identifier">typeindex</span><span class="special">::</span><span class="identifier">type_index</span></code>).
555              </li>
556</ul></div>
557        </li>
558<li class="listitem">
559          <code class="computeroutput"><span class="identifier">type_info_wrapper</span></code> component
560          has been deprecated and will be removed in future releases. <a href="http://www.boost.org/doc/libs/release/doc/html/boost_typeindex.html" target="_top">Boost.TypeIndex</a>
561          is recommended as a replacement.
562        </li>
563<li class="listitem">
564          Removed the previously deprecated headers: <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">log</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">intrusive_ref_counter</span><span class="special">.</span><span class="identifier">hpp</span></code>,
565          <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">log</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">explicit_operator_bool</span><span class="special">.</span><span class="identifier">hpp</span></code>, <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">log</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">empty_deleter</span><span class="special">.</span><span class="identifier">hpp</span></code>.
566        </li>
567<li class="listitem">
568          Added support for building the library for OpenBSD. (<a href="https://svn.boost.org/trac/boost/ticket/11446" target="_top">#11446</a>)
569        </li>
570<li class="listitem">
571          Improved internal implementation of the event synchronization primitive
572          used for asynchronous logging. The updated implementation relies on <a href="http://www.boost.org/doc/libs/release/doc/html/atomic.html" target="_top">Boost.Atomic</a>
573          for atomic operations which provides better portability. On Linux the implementation
574          uses futexes directly. (<a href="https://svn.boost.org/trac/boost/ticket/11398" target="_top">#11398</a>)
575        </li>
576<li class="listitem">
577          Changed the format of dates produced by the default formatter constructed
578          from strings (e.g. when initializing the library from a config file). The
579          new format displays months as numbers instead of abbreviated names. This
580          allows for easier log record ordering when post-processing log files. (<a href="https://svn.boost.org/trac/boost/ticket/8839" target="_top">#8839</a>)
581        </li>
582</ul></div>
583<p>
584      <span class="bold"><strong>Bug fixes:</strong></span>
585    </p>
586<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
587<li class="listitem">
588          Fixed incorrect behavior of <code class="computeroutput"><span class="identifier">attribute_value_set</span><span class="special">::</span><span class="identifier">insert</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">attribute_value_set</span></code>
589          constructor in some cases. The inserted elements could have made some previously
590          inserted elements not findable. The constructor from <code class="computeroutput"><span class="identifier">attribute_set</span></code>s
591          could leave some of the attribute values acquired from attributes not findable.
592          (<a href="https://svn.boost.org/trac/boost/ticket/11190" target="_top">#11190</a>)
593        </li>
594<li class="listitem">
595          Added missing function template exports. (<a href="https://svn.boost.org/trac/boost/ticket/11495" target="_top">#11495</a>)
596        </li>
597</ul></div>
598<h4>
599<a name="log.changelog.h14"></a>
600      <span class="phrase"><a name="log.changelog.2_5__boost_1_58"></a></span><a class="link" href="changelog.html#log.changelog.2_5__boost_1_58">2.5,
601      Boost 1.58</a>
602    </h4>
603<p>
604      <span class="bold"><strong>Bug fixes:</strong></span>
605    </p>
606<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
607<li class="listitem">
608          Fixed thread id formatting. The thread identifiers could be presented as
609          zeros on big-endian platforms. Also the lower 4 bits of the ids were lost
610          in the output.
611        </li>
612<li class="listitem">
613          Fixed process id formatting. Process ids could have misplaced filler zeros.
614          (<a href="https://svn.boost.org/trac/boost/ticket/10926" target="_top">#10926</a>)
615        </li>
616<li class="listitem">
617          Fixed build failure on GNU Hurd.
618        </li>
619<li class="listitem">
620          Fixed incorrect behavior of <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">text
621          file sink backend</a> in case if free space on the file system gets
622          exhausted. The sink will no longer create lots of empty files in attempt
623          to recover. (<a href="https://svn.boost.org/trac/boost/ticket/11016" target="_top">#11016</a>)
624        </li>
625<li class="listitem">
626          Fixed incorrect behavior of <code class="computeroutput"><span class="identifier">attribute_set</span><span class="special">::</span><span class="identifier">insert</span><span class="special">()</span></code> in some cases. The inserted elements
627          could have made some previously inserted elements not findable. (<a href="https://svn.boost.org/trac/boost/ticket/11106" target="_top">#11106</a>)
628        </li>
629<li class="listitem">
630          Fixed incorrect behavior of <code class="computeroutput"><span class="identifier">attribute_value_set</span><span class="special">::</span><span class="identifier">size</span><span class="special">()</span></code> if a large number of attribute values
631          are inserted into the set. (<a href="https://svn.boost.org/trac/boost/ticket/11148" target="_top">#11148</a>)
632        </li>
633</ul></div>
634<h4>
635<a name="log.changelog.h15"></a>
636      <span class="phrase"><a name="log.changelog.2_4__boost_1_57"></a></span><a class="link" href="changelog.html#log.changelog.2_4__boost_1_57">2.4,
637      Boost 1.57</a>
638    </h4>
639<p>
640      <span class="bold"><strong>Bug fixes:</strong></span>
641    </p>
642<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
643<li class="listitem">
644          <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.decorators.xml" title="XML character decorator">XML
645          character decorator</a> now escapes quote (") characters.
646        </li>
647<li class="listitem">
648          The exceptions thrown by asynchronous sinks created as a result of <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.settings" title="Library initialization from a settings container">initialization from settings</a>
649          are now silently suppressed instead of terminating the application. If
650          special error handling is needed, it is recommended to <a class="link" href="extension/settings.html#log.extension.settings.sinks" title="Adding support for user-defined sinks">register
651          a user-defined sink factory</a>. (<a href="https://svn.boost.org/trac/boost/ticket/10638" target="_top">#10638</a>)
652        </li>
653<li class="listitem">
654          Corrected syslog message composition on MSVC, if message length exceeds
655          1025 bytes. (<a href="https://svn.boost.org/trac/boost/ticket/10700" target="_top">#10700</a>)
656        </li>
657</ul></div>
658<h4>
659<a name="log.changelog.h16"></a>
660      <span class="phrase"><a name="log.changelog.2_3__boost_1_56"></a></span><a class="link" href="changelog.html#log.changelog.2_3__boost_1_56">2.3,
661      Boost 1.56</a>
662    </h4>
663<p>
664      <span class="bold"><strong>General changes:</strong></span>
665    </p>
666<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
667<li class="listitem">
668          For Windows targets, the library now compiles for Windows XP by default.
669        </li>
670<li class="listitem">
671          Added indexing operators with <code class="computeroutput"><a class="link" href="../boost/log/attribute_name.html" title="Class attribute_name">attribute_name</a></code>
672          arguments to <code class="computeroutput"><a class="link" href="../boost/log/record.html" title="Class record">record</a></code> and
673          <code class="computeroutput"><a class="link" href="../boost/log/record_view.html" title="Class record_view">record_view</a></code>. The operators
674          behave the same way as the similar operators of <code class="computeroutput"><a class="link" href="../boost/log/attribute_value_set.html" title="Class attribute_value_set">attribute_value_set</a></code>
675          (i.e. return an <code class="computeroutput"><a class="link" href="../boost/log/attribute_value.html" title="Class attribute_value">attribute_value</a></code>
676          identified by the name).
677        </li>
678<li class="listitem">
679          Added operators for non-const object output to <code class="computeroutput"><a class="link" href="../boost/log/basic_formatting_ostream.html" title="Class template basic_formatting_ostream">basic_formatting_ostream</a></code>.
680          (<a href="https://svn.boost.org/trac/boost/ticket/9389" target="_top">#9389</a>)
681        </li>
682<li class="listitem">
683          Added new format flags "%c", "%C" and "%F"
684          to the <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.named_scope" title="Named scope formatter">named
685          scope formatter</a>. The new flags allow putting function names and
686          source file names of named scopes into the formatted strings. (<a href="https://svn.boost.org/trac/boost/ticket/9263" target="_top">#9263</a>)
687        </li>
688<li class="listitem">
689          Added support for incomplete and empty markers to the <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.named_scope" title="Named scope formatter">named
690          scope formatter</a>. The markers can be used to customize the scope
691          list presentation when the list is empty or limited by the <code class="computeroutput"><span class="identifier">depth</span></code> named parameter. (<a href="https://svn.boost.org/trac/boost/ticket/9123" target="_top">#9123</a>)
692        </li>
693<li class="listitem">
694          The default presentation for incomplete named scope lists has changed.
695          In previous releases the incomplete marker included a trailing delimiter,
696          for example "scope1&lt;-scope2&lt;-...". From this release the
697          trailing delimiter is omitted, so in the same case the formatting result
698          would be: "scope1&lt;-scope2..." (note the missing trailing "&lt;-").
699        </li>
700<li class="listitem">
701          Added a support header for <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">regex</span></code>.
702          If <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">log</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">std_regex</span><span class="special">.</span><span class="identifier">hpp</span></code> is included, one can use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">regex</span></code> expressions with <a class="link" href="detailed/expressions.html#log.detailed.expressions.predicates.advanced_string_matching" title="Advanced string matching filter">string
703          matching filters</a>.
704        </li>
705<li class="listitem">
706          By default Boost.Log uses <a href="http://www.boost.org/doc/libs/release/libs/regex/index.html" target="_top">Boost.Regex</a>
707          internally as the regular expressions backend. <a href="http://www.boost.org/doc/libs/release/doc/html/xpressive.html" target="_top">Boost.Xpressive</a>
708          was used in previous releases. This backend is used to implement string
709          matching filters parsed from strings or settings. Using <a href="http://www.boost.org/doc/libs/release/libs/regex/index.html" target="_top">Boost.Regex</a>
710          by default results in smaller executables and also better runtime performance.
711        </li>
712<li class="listitem">
713          Added build configuration macros for regex backend selection. By defining
714          <code class="computeroutput"><span class="identifier">BOOST_LOG_USE_STD_REGEX</span></code>,
715          <code class="computeroutput"><span class="identifier">BOOST_LOG_USE_BOOST_REGEX</span></code>
716          or <code class="computeroutput"><span class="identifier">BOOST_LOG_USE_BOOST_XPRESSIVE</span></code>
717          at Boost.Log build time the user can select which regex implementation
718          will be used by the library internally for the string matching filters
719          parsed from strings and settings. Note that this selection does not affect
720          <a class="link" href="detailed/expressions.html#log.detailed.expressions.predicates.advanced_string_matching" title="Advanced string matching filter">string
721          matching filters in expressions</a>.
722        </li>
723</ul></div>
724<p>
725      <span class="bold"><strong>Bug fixes:</strong></span>
726    </p>
727<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
728<li class="listitem">
729          Fixed <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.dump" title="Binary dump manipulator"><code class="computeroutput"><span class="identifier">dump</span></code></a> manipulator output on AVX2-enabled
730          CPUs (e.g. Intel Haswell).
731        </li>
732<li class="listitem">
733          Fixed compilation of <code class="computeroutput"><span class="identifier">get_attribute</span></code>
734          method of loggers.
735        </li>
736<li class="listitem">
737          Fixed a possible race in <code class="computeroutput"><span class="identifier">locked_backend</span><span class="special">()</span></code> function implementation of synchronous
738          and asynchronous sink frontends.
739        </li>
740<li class="listitem">
741          Fixed a possible infinite block of the logging threads in the asynchronous
742          sink enqueue methods when <code class="computeroutput"><a class="link" href="../boost/log/sinks/block_on_overflow.html" title="Class block_on_overflow">block_on_overflow</a></code>
743          strategy was used.
744        </li>
745<li class="listitem">
746          Added a workaround for ticket <a href="https://svn.boost.org/trac/boost/ticket/9363" target="_top">#9363</a>.
747        </li>
748<li class="listitem">
749          Added a workaround for MSVC bug that caused the <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.add_value" title="Attribute value attaching manipulator"><code class="computeroutput"><span class="identifier">add_value</span></code></a> manipulator produce
750          garbage attribute values when using with immediate integer constants. (<a href="https://svn.boost.org/trac/boost/ticket/9320" target="_top">#9320</a>)
751        </li>
752</ul></div>
753<h4>
754<a name="log.changelog.h17"></a>
755      <span class="phrase"><a name="log.changelog.2_2__boost_1_55"></a></span><a class="link" href="changelog.html#log.changelog.2_2__boost_1_55">2.2,
756      Boost 1.55</a>
757    </h4>
758<p>
759      <span class="bold"><strong>General changes:</strong></span>
760    </p>
761<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
762<li class="listitem">
763          Added a new configuration macro <code class="computeroutput"><span class="identifier">BOOST_LOG_WITHOUT_DEFAULT_FACTORIES</span></code>.
764          By defining this macro the user can disable compilation of the default
765          filter and formatter factories used by settings parsers. This can substantially
766          reduce binary sizes while still retaining support for settings parsers.
767          Note that when this macro is defined the user will have to register <span class="underline">all</span> attributes in the library.
768        </li>
769<li class="listitem">
770          Rewritten some of the parsers to reduce the compiled binary size. The rewritten
771          parsers are more robust in detecting ambiguous and incorrect input.
772        </li>
773<li class="listitem">
774          The header <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">log</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">intrusive_ref_counter</span><span class="special">.</span><span class="identifier">hpp</span></code> is deprecated and will be removed
775          in future releases. Its contents have been reworked and moved to <a href="http://www.boost.org/doc/libs/release/libs/smart_ptr/smart_ptr.htm" target="_top">Boost.SmartPtr</a>,
776          as <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">smart_ptr</span><span class="special">/</span><span class="identifier">intrusive_ref_counter</span><span class="special">.</span><span class="identifier">hpp</span></code>.
777        </li>
778<li class="listitem">
779          The header <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">log</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">explicit_operator_bool</span><span class="special">.</span><span class="identifier">hpp</span></code> is deprecated and will be removed
780          in future releases. Its contents have been moved to <a href="http://www.boost.org/doc/libs/release/libs/utility/utility.htm" target="_top">Boost.Utility</a>,
781          as <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">explicit_operator_bool</span><span class="special">.</span><span class="identifier">hpp</span></code>.
782        </li>
783<li class="listitem">
784          The header <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">log</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">empty_deleter</span><span class="special">.</span><span class="identifier">hpp</span></code> is deprecated and will be removed
785          in future releases. Its contents have been moved to <a href="http://www.boost.org/doc/libs/release/libs/utility/utility.htm" target="_top">Boost.Utility</a>,
786          as <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">empty_deleter</span><span class="special">.</span><span class="identifier">hpp</span></code>.
787        </li>
788</ul></div>
789<p>
790      <span class="bold"><strong>Bug fixes:</strong></span>
791    </p>
792<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
793<li class="listitem">
794          Fixed <a class="link" href="detailed/attributes.html#log.detailed.attributes.timer" title="Stop watch (timer)"><code class="computeroutput"><span class="identifier">timer</span></code></a>
795          attribute generating incorrect time readings on Windows on heavy thread
796          contention when <code class="computeroutput"><span class="identifier">QueryPerformanceCounter</span></code>
797          API was used.
798        </li>
799<li class="listitem">
800          Fixed a bug in the filter parser that prevented using parsed filters with
801          some attributes. For example, parsed filters didn't work with a string-typed
802          attribute value, if the value was compared to a numeric operand.
803        </li>
804<li class="listitem">
805          Fixed thread id formatting discrepancies between the default sink and formatters.
806        </li>
807<li class="listitem">
808          Fixed parsing RotationTimePoint parameter values from settings, when the
809          time point only included time of day (i.e. daily rotation).
810        </li>
811<li class="listitem">
812          Closed tickets: <a href="https://svn.boost.org/trac/boost/ticket/8815" target="_top">#8815</a>, <a href="https://svn.boost.org/trac/boost/ticket/8819" target="_top">#8819</a>, <a href="https://svn.boost.org/trac/boost/ticket/8915" target="_top">#8915</a>, <a href="https://svn.boost.org/trac/boost/ticket/8917" target="_top">#8917</a>, <a href="https://svn.boost.org/trac/boost/ticket/9139" target="_top">#9139</a>, <a href="https://svn.boost.org/trac/boost/ticket/9140" target="_top">#9140</a>,
813          <a href="https://svn.boost.org/trac/boost/ticket/9153" target="_top">#9153</a>, <a href="https://svn.boost.org/trac/boost/ticket/9155" target="_top">#9155</a>.
814        </li>
815</ul></div>
816<h4>
817<a name="log.changelog.h18"></a>
818      <span class="phrase"><a name="log.changelog.2_1__boost_1_54"></a></span><a class="link" href="changelog.html#log.changelog.2_1__boost_1_54">2.1,
819      Boost 1.54</a>
820    </h4>
821<p>
822      <span class="bold"><strong>Breaking changes:</strong></span>
823    </p>
824<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
825          <code class="computeroutput"><a class="link" href="../boost/log/basic_formatting_ostream.html" title="Class template basic_formatting_ostream">basic_formatting_ostream</a></code>
826          no longer derives from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span></code>,
827          but rather reimplements its and its base classes interface closely. This
828          solves problems with overloading <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;&lt;</span></code> for <code class="computeroutput"><a class="link" href="../boost/log/basic_formatting_ostream.html" title="Class template basic_formatting_ostream">basic_formatting_ostream</a></code>
829          and user-defined types. This will break user's code if it relied on the
830          inheritance from the standard stream types (such as passing <code class="computeroutput"><a class="link" href="../boost/log/basic_formatting_ostream.html" title="Class template basic_formatting_ostream">basic_formatting_ostream</a></code>
831          object as an argument to a function receiving <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span></code>).
832          Please, use the <code class="computeroutput"><span class="identifier">stream</span><span class="special">()</span></code> member function to access the standard
833          stream. This change will <span class="bold"><strong>not</strong></span> break the
834          code that outputs user-defined types to a <code class="computeroutput"><a class="link" href="../boost/log/basic_formatting_ostream.html" title="Class template basic_formatting_ostream">basic_formatting_ostream</a></code>
835          stream while there are only <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;&lt;</span></code> overloads for the standard stream
836          types - the code will compile and use the standard operator overloads,
837          as before.
838        </li></ul></div>
839<p>
840      <span class="bold"><strong>General changes:</strong></span>
841    </p>
842<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
843<li class="listitem">
844          Removed the use of deprecated macros of <a href="http://www.boost.org/doc/libs/release/libs/config/doc/html/index.html" target="_top">Boost.Config</a>.
845        </li>
846<li class="listitem">
847          Build system improved. On Windows, presence of Message Compiler is now
848          detected automatically, and support for event log is only enabled when
849          the tool is available.
850        </li>
851<li class="listitem">
852          Fixed compilation when <code class="computeroutput"><span class="identifier">BOOST_LOG_USE_COMPILER_TLS</span></code>
853          configuration macro is defined.
854        </li>
855<li class="listitem">
856          Fixed compilation of some uses of the <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.add_value" title="Attribute value attaching manipulator"><code class="computeroutput"><span class="identifier">add_value</span></code></a> manipulator with MSVC.
857        </li>
858<li class="listitem">
859          Added a new <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.dump" title="Binary dump manipulator"><code class="computeroutput"><span class="identifier">dump</span></code></a> output manipulator for printing
860          binary data.
861        </li>
862</ul></div>
863<h4>
864<a name="log.changelog.h19"></a>
865      <span class="phrase"><a name="log.changelog.2_0__13_april_2013"></a></span><a class="link" href="changelog.html#log.changelog.2_0__13_april_2013">2.0,
866      13 April 2013</a>
867    </h4>
868<p>
869      <span class="bold"><strong>General changes:</strong></span>
870    </p>
871<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
872<li class="listitem">
873          The library is now compatible with Boost 1.53 or newer. <a href="http://www.boost.org/doc/libs/release/libs/filesystem/doc/index.htm" target="_top">Boost.Filesystem</a>
874          v2 no longer supported.
875        </li>
876<li class="listitem">
877          The library now does not introduce separate logging cores for different
878          character types. A lot of other library components also became character
879          type agnostic. The application can now use loggers of different character
880          types with the common logging core. The library performs character code
881          conversion as needed. <a href="http://www.boost.org/doc/libs/release/libs/locale/doc/html/index.html" target="_top">Boost.Locale</a>
882          can be used to construct locale objects for proper encoding conversion.
883        </li>
884<li class="listitem">
885          The <code class="computeroutput"><span class="identifier">BOOST_LOG_NO_COMPILER_TLS</span></code>
886          configuration macro has been replaced with <code class="computeroutput"><span class="identifier">BOOST_LOG_USE_COMPILER_TLS</span></code>
887          with the opposite meaning. The support for compiler intrinsics for TLS
888          is now disabled by default.
889        </li>
890<li class="listitem">
891          Added configuration macros <code class="computeroutput"><span class="identifier">BOOST_LOG_WITHOUT_DEBUG_OUTPUT</span></code>,
892          <code class="computeroutput"><span class="identifier">BOOST_LOG_WITHOUT_EVENT_LOG</span></code>
893          and <code class="computeroutput"><span class="identifier">BOOST_LOG_WITHOUT_SYSLOG</span></code>.
894          <code class="computeroutput"><span class="identifier">BOOST_LOG_NO_SETTINGS_PARSERS_SUPPORT</span></code>
895          macro renamed to <code class="computeroutput"><span class="identifier">BOOST_LOG_WITHOUT_SETTINGS_PARSERS</span></code>.
896          The new macros allow to selectively disable support for the corresponding
897          sink backends.
898        </li>
899<li class="listitem">
900          The library now uses <a href="http://www.boost.org/doc/libs/release/doc/html/xpressive.html" target="_top">Boost.Xpressive</a>
901          instead of <a href="http://www.boost.org/doc/libs/release/libs/regex/index.html" target="_top">Boost.Regex</a>
902          internally which makes it unnecessary to build the latter in order to use
903          the library. <a href="http://www.boost.org/doc/libs/release/libs/regex/index.html" target="_top">Boost.Regex</a>
904          is still supported on the user's side.
905        </li>
906<li class="listitem">
907          Made some internal code to detect Windows NT6 API availability at run time,
908          if not explicitly enabled by the <code class="computeroutput"><span class="identifier">BOOST_LOG_USE_WINNT6_API</span></code>
909          macro. The code compiled without the macro defined will still be able run
910          on NT5, but when run on NT6 it will be more efficient. With the macro defined
911          the resulting code will not run on NT5, but will be a little more efficient
912          on NT6 than without the macro.
913        </li>
914<li class="listitem">
915          Added a concept of a default sink. The default sink is used when there
916          are no sinks configured in the logging core. The sink is synchronous and
917          thread-safe, it requires no configuration and is overridden by any sinks
918          configured in the core by user. The default sink will write log messages
919          to the console, prepending with a timestamp, thread id and severity level.
920        </li>
921<li class="listitem">
922          Trivial logging no longer implicitly initializes the library. Instead,
923          the default sink is used to display log messages, unless the library is
924          configured otherwise. It is now possible to use both trivial and advanced
925          logging.
926        </li>
927<li class="listitem">
928          Attribute values can now be added to log records after filtering. Such
929          values do not participate in filtering but can be used by formatters and
930          sinks. Log record message is now one of such attribute values, it is no
931          longer directly accessible from the log record interface.
932        </li>
933<li class="listitem">
934          Formatters and sinks no longer operate on log records but rather on <code class="computeroutput"><a class="link" href="../boost/log/record_view.html" title="Class record_view">record_view</a></code>s. Records are now
935          moved from when pushed to the core for further processing. This is done
936          in order to eliminate the possibility of unsafe record modification after
937          pushing to the core. As a consequence, log records can no longer be copied,
938          only moving is allowed. Record views can be copied and moved; copying is
939          a shallow operation.
940        </li>
941<li class="listitem">
942          The implementation now provides several stream manipulators. Notably, the
943          <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.to_log" title="Customized logging manipulator"><code class="computeroutput"><span class="identifier">to_log</span></code></a> manipulator allows to customize
944          formatting for particular types and attributes without changing the regular
945          streaming operator. Also, the <a class="link" href="detailed/utilities.html#log.detailed.utilities.manipulators.add_value" title="Attribute value attaching manipulator"><code class="computeroutput"><span class="identifier">add_value</span></code></a> manipulator can be used
946          in logging expressions to attach attribute values to the record.
947        </li>
948<li class="listitem">
949          Made a lot of improvements to speedup code compilation.
950        </li>
951</ul></div>
952<p>
953      <span class="bold"><strong>Attributes:</strong></span>
954    </p>
955<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
956<li class="listitem">
957          Changed the interface and the way of handling attribute values. The value
958          is now a pimpl wrapper around the value holder. The <code class="computeroutput"><a class="link" href="../boost/log/attribute_value.html" title="Class attribute_value">attribute_value</a></code>
959          class in various components of the library is no longer pointed to with
960          <code class="computeroutput"><span class="identifier">shared_ptr</span></code>s but instead
961          is handled by value. This allowed to simplify attribute value handling
962          in simple cases.
963        </li>
964<li class="listitem">
965          Similarly to attribute values, the interface of attributes has been reworked
966          in the pimpl fashion. All attributes now derive from the <code class="computeroutput"><a class="link" href="../boost/log/attribute.html" title="Class attribute">attribute</a></code>
967          base class, which holds the reference to the implementation. All attributes
968          now have to be created by value rather than wrapped into <code class="computeroutput"><span class="identifier">shared_ptr</span></code> by user, which makes the code
969          more concise.
970        </li>
971<li class="listitem">
972          Added support for casting attributes from the base class <code class="computeroutput"><a class="link" href="../boost/log/attribute.html" title="Class attribute">attribute</a></code>
973          to the actual attribute type. This can be useful when the concrete attribute
974          factory provides additional interfaces.
975        </li>
976<li class="listitem">
977          The attribute value no longer has the <code class="computeroutput"><span class="identifier">get</span></code>
978          method. Use the <code class="computeroutput"><span class="identifier">extract</span></code>
979          function as a replacement.
980        </li>
981<li class="listitem">
982          The key type of attribute sets and attribute values set has been changed.
983          The new key type is called <code class="computeroutput"><a class="link" href="../boost/log/attribute_name.html" title="Class attribute_name">attribute_name</a></code>.
984          It is constructible from strings, so in most cases users won't need to
985          change the code. See <a class="link" href="detailed/attributes.html#log.detailed.attributes.related_components.attribute_name" title="Attribute names">here</a>
986          for more information.
987        </li>
988<li class="listitem">
989          Attribute values view have been renamed to attribute value set. The container
990          now supports adding more attribute values after being constructed.
991        </li>
992<li class="listitem">
993          Attribute sets and attribute value sets no longer maintain order of elements.
994          Although it wasn't stated explicitly, the containers used to be ordered
995          associative containers. Now the order of elements is unspecified. The implementation
996          has been reworked to speed up insertion/removal of attributes, as well
997          as attribute lookup and values set construction. The drawback is that memory
998          footprint may get increased in some cases.
999        </li>
1000<li class="listitem">
1001          Attribute sets now use small memory pools to speed up element insertion/removal.
1002        </li>
1003<li class="listitem">
1004          The header <code class="computeroutput"><span class="identifier">scoped_attribute</span><span class="special">.</span><span class="identifier">hpp</span></code>
1005          moved from <code class="computeroutput"><span class="identifier">utility</span></code> to the
1006          <code class="computeroutput"><span class="identifier">attributes</span></code> directory. The
1007          header <code class="computeroutput"><span class="identifier">attribute_value_extractor</span><span class="special">.</span><span class="identifier">hpp</span></code>
1008          in <code class="computeroutput"><span class="identifier">utility</span></code> has been replaced
1009          with headers <code class="computeroutput"><a class="link" href="../attributes.html#header.boost.log.attributes.value_extraction_hpp" title="Header &lt;boost/log/attributes/value_extraction.hpp&gt;">boost/log/attributes/value_extraction.hpp</a></code>
1010          and <code class="computeroutput"><a class="link" href="../attributes.html#header.boost.log.attributes.value_visitation_hpp" title="Header &lt;boost/log/attributes/value_visitation.hpp&gt;">boost/log/attributes/value_visitation.hpp</a></code>
1011          in the <code class="computeroutput"><span class="identifier">attributes</span></code> directory.
1012          The two new headers define the revised API of attribute value extraction
1013          and visitation, respectively. See <a class="link" href="detailed/attributes.html#log.detailed.attributes.related_components.value_processing" title="Attribute value extraction and visitation">here</a>
1014          for more details.
1015        </li>
1016<li class="listitem">
1017          <a class="link" href="detailed/attributes.html#log.detailed.attributes.related_components.scoped_attributes" title="Scoped attributes">Scoped
1018          attribute</a> macros simplified. The attribute constructor arguments
1019          are specified next to the attribute type and tag type is no longer required.
1020        </li>
1021<li class="listitem">
1022          The <a class="link" href="detailed/attributes.html#log.detailed.attributes.thread_id" title="Current thread identifier"><code class="computeroutput"><span class="identifier">current_thread_id</span></code></a>
1023          attribute no longer uses <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span></code>
1024          type for thread identification. An internal type is used instead, the type
1025          is accessible as <code class="computeroutput"><span class="identifier">current_thread_id</span><span class="special">::</span><span class="identifier">value_type</span></code>.
1026          The new thread ids are taken from the underlying OS API and thus more closely
1027          correlate to what may be displayed by debuggers and system diagnostic tools.
1028        </li>
1029<li class="listitem">
1030          Added <a class="link" href="detailed/attributes.html#log.detailed.attributes.process_name" title="Current process name"><code class="computeroutput"><span class="identifier">current_process_name</span></code></a> attribute.
1031          The attribute generates a string with the executable name of the current
1032          process.
1033        </li>
1034<li class="listitem">
1035          The <code class="computeroutput"><span class="identifier">functor</span></code> attribute has
1036          been renamed to <code class="computeroutput"><a class="link" href="../boost/log/attributes/function.html" title="Class template function">function</a></code>.
1037          The generator function has been renamed from <code class="computeroutput"><span class="identifier">make_functor_attr</span></code>
1038          to <code class="computeroutput"><span class="identifier">make_function</span></code>. The header
1039          has been renamed from <code class="computeroutput"><span class="identifier">functor</span><span class="special">.</span><span class="identifier">hpp</span></code>
1040          to <code class="computeroutput"><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span></code>.
1041        </li>
1042</ul></div>
1043<p>
1044      <span class="bold"><strong>Logging sources:</strong></span>
1045    </p>
1046<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1047<li class="listitem">
1048          Fixed compilation problems with exception handling logger feature.
1049        </li>
1050<li class="listitem">
1051          Global logger storage made more friendly to the setups in which hidden
1052          visibility is set by default.
1053        </li>
1054<li class="listitem">
1055          Added the macros for separated global logger declaration and definition.
1056          Old macros have been renamed to better reflect their effect (<code class="computeroutput"><span class="identifier">BOOST_LOG_DECLARE_GLOBAL_LOGGER_INIT</span></code>
1057          to <code class="computeroutput"><span class="identifier">BOOST_LOG_INLINE_GLOBAL_LOGGER_INIT</span></code>,
1058          <code class="computeroutput"><span class="identifier">BOOST_LOG_DECLARE_GLOBAL_LOGGER</span></code>
1059          to <code class="computeroutput"><span class="identifier">BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT</span></code>,
1060          <code class="computeroutput"><span class="identifier">BOOST_LOG_DECLARE_GLOBAL_LOGGER_CTOR_ARGS</span></code>
1061          to <code class="computeroutput"><span class="identifier">BOOST_LOG_INLINE_GLOBAL_LOGGER_CTOR_ARGS</span></code>).
1062          Also, the macros no longer define the <code class="computeroutput"><span class="identifier">get_logger</span></code>
1063          free function for logger acquisition. Use <code class="computeroutput"><span class="identifier">logger</span><span class="special">::</span><span class="identifier">get</span></code>
1064          instead. See <a class="link" href="detailed/sources.html#log.detailed.sources.global_storage" title="Global storage for loggers">here</a>
1065          for more information.
1066        </li>
1067<li class="listitem">
1068          The channel logger now supports changing the channel name after construction.
1069          The channel name can be set either by calling the modifier method or by
1070          specifying the name in the logging statement. Added <code class="computeroutput"><span class="identifier">BOOST_LOG_STREAM_CHANNEL</span></code>
1071          and <code class="computeroutput"><span class="identifier">BOOST_LOG_STREAM_CHANNEL_SEV</span></code>
1072          (as well as their shorthands <code class="computeroutput"><span class="identifier">BOOST_LOG_CHANNEL</span></code>
1073          and <code class="computeroutput"><span class="identifier">BOOST_LOG_CHANNEL_SEV</span></code>)
1074          macros that allow to specify channel name for the log record.
1075        </li>
1076</ul></div>
1077<p>
1078      <span class="bold"><strong>Logging sinks:</strong></span>
1079    </p>
1080<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1081<li class="listitem">
1082          Types for integral constants for syslog and event log were renamed to drop
1083          the <code class="computeroutput"><span class="identifier">_t</span></code> suffix.
1084        </li>
1085<li class="listitem">
1086          Formatting functionality moved to sink frontends. Sink backends that support
1087          record formatting derive from the <code class="computeroutput"><span class="identifier">basic_formatting_sink_backend</span></code>
1088          class template, which indicates to the frontend that record formatting
1089          is required. This breaks user-side API of the library: the formatter and
1090          locale has to be set to the frontend rather than backend.
1091        </li>
1092<li class="listitem">
1093          Formatting support no longer makes frontend thread synchronization mandatory.
1094          Formatting is done prior to locking for processing the record in the backend
1095          and can be performed concurrently in multiple threads.
1096        </li>
1097<li class="listitem">
1098          Added support for flushing sinks. A sink backend that supports flushing
1099          has to define public method with the following signature: <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">flush</span><span class="special">()</span></code>.
1100        </li>
1101<li class="listitem">
1102          Asynchronous sink frontend reworked, ordering asynchronous sink removed.
1103          The <code class="computeroutput"><a class="link" href="../boost/log/sinks/asynchronous_sink.html" title="Class template asynchronous_sink">asynchronous_sink</a></code>
1104          class template now allows to specify record queueing strategy. Several
1105          strategies provided, including <code class="computeroutput"><a class="link" href="../boost/log/sinks/unbounded_fifo_queue.html" title="Class unbounded_fifo_queue">unbounded_fifo_queue</a></code>
1106          (the default) and <code class="computeroutput"><a class="link" href="../boost/log/sinks/unbounded_ordering_queue.html" title="Class template unbounded_ordering_queue">unbounded_ordering_queue</a></code>
1107          which cover the functionality of asynchronous sink frontends in 1.x releases.
1108          See the <a class="link" href="detailed/sink_frontends.html#log.detailed.sink_frontends.async" title="Asynchronous sink frontend">asynchronous
1109          sink frontend</a> docs for more details.
1110        </li>
1111<li class="listitem">
1112          Lock-free FIFO record queueing in asynchronous sinks reworked to reduce
1113          log record processing stalls.
1114        </li>
1115<li class="listitem">
1116          Added <code class="computeroutput"><span class="identifier">Append</span></code> configuration
1117          file parameter for text file sinks. If this parameter is set to <code class="computeroutput"><span class="keyword">true</span></code>, the sink will append log records to
1118          the existing log file instead of overwriting it.
1119        </li>
1120<li class="listitem">
1121          Added bounded variants of asynchronous sink frontends. Implemented two
1122          strategies to handle queue overflows: either log records are dropped or
1123          logging threads are blocked until there is space in the queue.
1124        </li>
1125</ul></div>
1126<p>
1127      <span class="bold"><strong>Filters and formatters:</strong></span>
1128    </p>
1129<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1130<li class="listitem">
1131          As a result of character type unification, filters no longer depend on
1132          the character type.
1133        </li>
1134<li class="listitem">
1135          Two new types were introduced to dynamically store filters and formatters:
1136          <code class="computeroutput"><a class="link" href="../boost/log/filter.html" title="Class filter">filter</a></code> and <code class="computeroutput"><a class="link" href="../boost/log/basic_formatter.html" title="Class template basic_formatter">basic_formatter</a></code>.
1137          Both new types implement type erasure and provide function calling operators
1138          to invoke the stored filter or formatter.
1139        </li>
1140<li class="listitem">
1141          Filters and formatters were rewritten. The new implementation is based
1142          on <a href="http://www.boost.org/doc/libs/release/libs/phoenix/doc/html/index.html" target="_top">Boost.Phoenix</a>
1143          and resides in the <code class="computeroutput"><span class="identifier">expressions</span></code>
1144          namespace. Attribute placeholders are now interoperable with other template
1145          expressions based on <a href="http://www.boost.org/doc/libs/release/libs/phoenix/doc/html/index.html" target="_top">Boost.Phoenix</a>.
1146          All template expression headers now reside in the <code class="computeroutput"><span class="identifier">expressions</span></code>
1147          subdirectory.
1148        </li>
1149<li class="listitem">
1150          The library now supports defining keywords for attributes (see <code class="computeroutput"><span class="identifier">BOOST_LOG_ATTRIBUTE_KEYWORD</span></code> macro). Keywords
1151          can be used in template expressions instead of attribute placeholders and
1152          also as a key in container lookups.
1153        </li>
1154<li class="listitem">
1155          Filters and formatters do not throw exceptions by default when an attribute
1156          value cannot be used to complete the function (e.g. when the value is missing
1157          or has inappropriate type). The offending filter subexpression will return
1158          <code class="computeroutput"><span class="keyword">false</span></code> in such cases, the formatter
1159          will result in empty string instead of the value. The behavior can be changed
1160          by calling <code class="computeroutput"><span class="identifier">or_default</span></code> or
1161          <code class="computeroutput"><span class="identifier">or_throw</span></code> member functions
1162          on the attribute value placeholder in the filtering/formatting expression.
1163        </li>
1164<li class="listitem">
1165          Date and time formatter implementation is not based on <a href="http://www.boost.org/doc/libs/release/doc/html/date_time.html" target="_top">Boost.DateTime</a>
1166          IO facets anymore. The new implementation improves formatting performance.
1167          The formatter has been renamed to <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.date_time" title="Date and time formatter"><code class="computeroutput"><span class="identifier">format_date_time</span></code></a>.
1168        </li>
1169<li class="listitem">
1170          Named scope formatter now supports scope format specification. The scope
1171          format can include the scope name, as well as file name and line number.
1172          The formatter has been renamed to <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.named_scope" title="Named scope formatter"><code class="computeroutput"><span class="identifier">format_named_scope</span></code></a>.
1173        </li>
1174<li class="listitem">
1175          <a class="link" href="detailed/expressions.html#log.detailed.expressions.formatters.decorators" title="Character decorators">Character
1176          decorators</a> were renamed to <code class="computeroutput"><span class="identifier">c_decor</span></code>,
1177          <code class="computeroutput"><span class="identifier">c_ascii_decor</span></code>, <code class="computeroutput"><span class="identifier">xml_decor</span></code> and <code class="computeroutput"><span class="identifier">csv_decor</span></code>.
1178          The generic character decorator is named <code class="computeroutput"><span class="identifier">char_decor</span></code>
1179          now.
1180        </li>
1181<li class="listitem">
1182          Added a new <a class="link" href="detailed/expressions.html#log.detailed.expressions.predicates.channel_severity_filter" title="Severity threshold per channel filter">channel
1183          severity filter</a>. The filter allows to setup severity thresholds
1184          for different channels. The filter checks log record severity level against
1185          the threshold corresponding to the channel the record belongs to.
1186        </li>
1187</ul></div>
1188<p>
1189      <span class="bold"><strong>Documentation changes:</strong></span>
1190    </p>
1191<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1192<li class="listitem">
1193          Most code examples from the docs have been extracted into compilable standalone
1194          examples, which can be used for testing and experimenting with the library.
1195        </li>
1196<li class="listitem">
1197          Added a lot of cross-references to the documentation, which should simplify
1198          navigation.
1199        </li>
1200</ul></div>
1201<p>
1202      <span class="bold"><strong>Miscellaneous:</strong></span>
1203    </p>
1204<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1205<li class="listitem">
1206          Fixed a bug: the logging core could enter an infinite loop inside <code class="computeroutput"><span class="identifier">push_record</span></code> if a sink throws and the
1207          exception is suppressed by the exception handler set in the core.
1208        </li>
1209<li class="listitem">
1210          Changed the type dispatching implementation to reduce the usage of virtual
1211          functions. This greatly reduced the library size.
1212        </li>
1213<li class="listitem">
1214          Type dispatchers made more friendly to the setups in which hidden visibility
1215          is set by default.
1216        </li>
1217<li class="listitem">
1218          The interface of type dispatchers changed. The dispatcher now returns
1219          <code class="computeroutput"><span class="identifier">type_visitor</span></code> instance by
1220          value, and the visitor is no longer a base for the actual receiver of the
1221          dispatched value. Instead, the visitor now refers to the receiver, if one
1222          is capable to consume the value. The <code class="computeroutput"><span class="identifier">visit</span></code>
1223          method has been renamed to <code class="computeroutput"><span class="keyword">operator</span>
1224          <span class="special">()</span></code>. The static type dispatcher now
1225          requires a reference to the receiver on construction, it doesn't imply
1226          that the receiver derives from the dispatcher anymore.
1227        </li>
1228<li class="listitem">
1229          The <code class="computeroutput"><span class="identifier">slim_string</span></code> utility
1230          has been removed. There is no replacement.
1231        </li>
1232<li class="listitem">
1233          The library now uses many features from the latest C++ standard (aka C++11).
1234          For instance, many library components now support move semantics. <a href="http://www.boost.org/doc/libs/release/doc/html/move.html" target="_top">Boost.Move</a>
1235          is used for move emulation on C++03-compatible compilers.
1236        </li>
1237</ul></div>
1238<h4>
1239<a name="log.changelog.h20"></a>
1240      <span class="phrase"><a name="log.changelog.1_1__02_december_2011"></a></span><a class="link" href="changelog.html#log.changelog.1_1__02_december_2011">1.1,
1241      02 December 2011</a>
1242    </h4>
1243<p>
1244      This release mostly fixes bugs in the code and documentation.
1245    </p>
1246<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1247<li class="listitem">
1248          Added support for <a href="http://www.boost.org/doc/libs/release/libs/filesystem/doc/index.htm" target="_top">Boost.Filesystem</a>
1249          v3.
1250        </li>
1251<li class="listitem">
1252          A number of bugs fixed.
1253        </li>
1254<li class="listitem">
1255          Corrections in the documentation.
1256        </li>
1257</ul></div>
1258<h4>
1259<a name="log.changelog.h21"></a>
1260      <span class="phrase"><a name="log.changelog.1_0__09_may_2010"></a></span><a class="link" href="changelog.html#log.changelog.1_0__09_may_2010">1.0,
1261      09 May 2010</a>
1262    </h4>
1263<p>
1264      This release mostly fixes bugs in the code and documentation. The next major
1265      release (2.0) will contain breaking changes and feature additions. The 1.0
1266      branch will not receive any feature updates.
1267    </p>
1268<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1269<li class="listitem">
1270          Added some optimization for thread local storage. In Windows setups, if
1271          you dynamically load Boost.Log binaries during the application run time,
1272          this optimization may lead to crashes. In that case, you may disable it
1273          by defining <code class="computeroutput"><span class="identifier">BOOST_LOG_NO_COMPILER_TLS</span></code>
1274          during the library build process. The macro also affects other platforms,
1275          which may be useful if your compiler does not support TLS.
1276        </li>
1277<li class="listitem">
1278          Added a few public accessors and convenience constructors to severity and
1279          channel loggers.
1280        </li>
1281<li class="listitem">
1282          Added ability to rotate log files at the specified time points. The <code class="computeroutput"><span class="identifier">rotation_interval</span></code> keyword is no longer
1283          available. The same functionality is achieved with the new <code class="computeroutput"><span class="identifier">time_based_rotation</span></code> keyword and the
1284          <code class="computeroutput"><span class="identifier">rotation_at_time_interval</span></code>
1285          predicate. See <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">here</a>
1286          for more details.
1287        </li>
1288<li class="listitem">
1289          Improved support for MinGW and Cygwin.
1290        </li>
1291<li class="listitem">
1292          A number of bugs fixed. Added workarounds to compile on GCC 4.2.
1293        </li>
1294<li class="listitem">
1295          Lots of corrections in the documentation.
1296        </li>
1297</ul></div>
1298<h4>
1299<a name="log.changelog.h22"></a>
1300      <span class="phrase"><a name="log.changelog.release_candidate_4__08_jan_2010"></a></span><a class="link" href="changelog.html#log.changelog.release_candidate_4__08_jan_2010">Release
1301      Candidate 4, 08 Jan 2010</a>
1302    </h4>
1303<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1304<li class="listitem">
1305          Substantial documentation improvement. The tutorial section has been reorganized.
1306        </li>
1307<li class="listitem">
1308          Library headers have been reorganized. Some other Boost libraries that
1309          were previously included by headers have been made optional. Such dependencies
1310          have been extracted into separate headers in the <code class="computeroutput"><span class="identifier">support</span></code>
1311          directory. Top level library headers now mostly include nested headers.
1312        </li>
1313<li class="listitem">
1314          Keywords have moved into a dedicated <code class="computeroutput"><span class="identifier">keywords</span></code>
1315          namespace. There are no longer nested <code class="computeroutput"><span class="identifier">keywords</span></code>
1316          namespaces in <code class="computeroutput"><span class="identifier">sinks</span></code>, <code class="computeroutput"><span class="identifier">attributes</span></code>, etc. All keywords have been
1317          extracted into separate headers in the <code class="computeroutput"><span class="identifier">keywords</span></code>
1318          directory.
1319        </li>
1320<li class="listitem">
1321          Removed rotating file stream. As a replacement, a <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_file" title="Text file backend">new
1322          file sink</a> has been added, which allows to achieve the same results
1323          ans adds a few more features.
1324        </li>
1325<li class="listitem">
1326          Added a new <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.text_multifile" title="Text multi-file backend">multifile</a>
1327          sink backend.
1328        </li>
1329<li class="listitem">
1330          Added a new ordering asynchronous sink frontend.
1331        </li>
1332<li class="listitem">
1333          The <a class="link" href="detailed/sink_backends.html#log.detailed.sink_backends.syslog" title="Syslog backend">syslog</a> sink
1334          backend is now supported on Windows, too. The sink no longer requires native
1335          support for POSIX API for syslog, but is able to send syslog packets to
1336          a remote server over UDP.
1337        </li>
1338<li class="listitem">
1339          Loggers implementation has been improved. Feature composition mechanism
1340          has been cleaned up.
1341        </li>
1342<li class="listitem">
1343          Added support for scoped logging. There is now a distinct <a class="link" href="detailed.html#log.detailed.core.record" title="Logging records">log
1344          record entity</a>, which is returned by the core as a result of filtering.
1345          It is possible to fill in the record message in any way the user wants,
1346          not necessarily with a streaming expression. The record object is now processed
1347          by sinks and formatters.
1348        </li>
1349<li class="listitem">
1350          Added support for exception control. User can register exception handlers
1351          at one of the three layers: for a particular sink, at the core layer, and
1352          for a particular logger (given that it has the appropriate feature). Sinks
1353          and core will not suppress exceptions by default. Filter and formatters
1354          will throw if the requested attribute value is not found.
1355        </li>
1356<li class="listitem">
1357          Added a few new formatters, called character decorators. These can be useful
1358          to post-process the formatted output before passing it on to the sink.
1359        </li>
1360<li class="listitem">
1361          Added attributes for thread and process identifiers. These identifiers
1362          are automatically added after the call to <code class="computeroutput"><span class="identifier">add_common_attributes</span></code>.
1363        </li>
1364<li class="listitem">
1365          Helper initialization functions, such as <code class="computeroutput"><span class="identifier">init_log_to_file</span></code>
1366          now accept more customization options as named arguments.
1367        </li>
1368<li class="listitem">
1369          A new <a class="link" href="detailed/utilities.html#log.detailed.utilities.setup.settings" title="Library initialization from a settings container">initialization
1370          interface</a> has been exposed. One can fill a settings container and
1371          use it to initialize the library.
1372        </li>
1373<li class="listitem">
1374          The library setup support code has been extracted into a separate binary.
1375          Further on, this binary will be made optional to build.
1376        </li>
1377<li class="listitem">
1378          Added a new mode of logging, called trivial logging. In this mode the library
1379          requires no initialization at all, however it does not offer many ways
1380          of customization.
1381        </li>
1382<li class="listitem">
1383          A number of bugs fixed.
1384        </li>
1385<li class="listitem">
1386          A few optimizations added to improve multithreaded applications performance.
1387        </li>
1388<li class="listitem">
1389          Removed some bug workarounds for older Boost releases. The library now
1390          requires Boost 1.39 or newer.
1391        </li>
1392</ul></div>
1393<h4>
1394<a name="log.changelog.h23"></a>
1395      <span class="phrase"><a name="log.changelog.release_candidate_3__08_feb_2009"></a></span><a class="link" href="changelog.html#log.changelog.release_candidate_3__08_feb_2009">Release
1396      Candidate 3, 08 Feb 2009</a>
1397    </h4>
1398<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1399<li class="listitem">
1400          Substantial documentation improvement.
1401        </li>
1402<li class="listitem">
1403          Added several Windows-specific sinks: Event Log (simplified and advanced),
1404          Windows debugger and experimental Event Trace for Windows Vista and later.
1405        </li>
1406<li class="listitem">
1407          Loggers now consist of a number of independent features that can be composed
1408          the way the user needs. User-defined features can be developed and injected
1409          into the mix.
1410        </li>
1411<li class="listitem">
1412          Attribute value extractors improved. With the new extract function attribute
1413          values can be extracted from the attribute values view by employing lambda
1414          functors.
1415        </li>
1416<li class="listitem">
1417          Some files and classes were moved or renamed to improve code clarity and
1418          shorten names.
1419        </li>
1420<li class="listitem">
1421          A number of bugs fixed.
1422        </li>
1423<li class="listitem">
1424          Added tests.
1425        </li>
1426</ul></div>
1427<h4>
1428<a name="log.changelog.h24"></a>
1429      <span class="phrase"><a name="log.changelog.release_candidate_2"></a></span><a class="link" href="changelog.html#log.changelog.release_candidate_2">Release
1430      Candidate 2</a>
1431    </h4>
1432<p>
1433      No one really remembers these dark ages...
1434    </p>
1435</div>
1436<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
1437<td align="left"></td>
1438<td align="right"><div class="copyright-footer">Copyright © 2007-2019 Andrey Semashev<p>
1439        Distributed under the Boost Software License, Version 1.0. (See accompanying
1440        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>).
1441      </p>
1442</div></td>
1443</tr></table>
1444<hr>
1445<div class="spirit-nav">
1446<a accesskey="p" href="../boost/log/current_scope.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="todo.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
1447</div>
1448</body>
1449</html>
1450