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"><<</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<-scope2<-...". From this release the 697 trailing delimiter is omitted, so in the same case the formatting result 698 would be: "scope1<-scope2..." (note the missing trailing "<-"). 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"><<</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"><<</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 <boost/log/attributes/value_extraction.hpp>">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 <boost/log/attributes/value_visitation.hpp>">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