As requested here: https://svn.boost.org/trac/boost/ticket/8746
this commit introduces the boost::log::keywords::max_files keyword
and implements this functionality in the file collector.
Additionally, the non-keyword make_collector call has max_files added as
a uintmax_t parameter, which has a default value as to not break
existing code.
The purpose of this is to limit the total number of files in the
collected logs. If not specified, the limit will be
std::numeric_limits<uintmax_t>::max(), which is likely greater than the
capacity of the filesystem.
Include winapi/config.hpp as soon as possible; avoid including even
Boost.Config before it so that it doesn't set Windows API version
accidentally by including some third party header. In all source files,
include detail/config.hpp or detail/setup_config.hpp first thing.
Moved all WinAPI config macros to the Jamfile.v2 and removed
windows_version.hpp as it was no longer needed. Also enabled inclusion of
windows.h while compiling the library.
Removed auto-linking with psapi.lib and advapi32.lib as it was no longer
working after ecf3114. Added linking with advapi32.lib to Jamfile.v2.
This reduces compile times and binary sizes. It should also fix compilation with compilers not able to handle Boost.Phoenix (see #11200).
Also, date/time format has changed. The default formatter will produce dates with numeric months instead of abbreviated month names (see #8839).
The standard attribute value types supported by default parsed formatters now include char16_t and char32_t, when available. This required to add new code conversion routines.
Added Boost.PP sequences with the standard types. These are used to generate the corresponding type sequences, which is faster to compile than doing this with Boost.MPL.
The updated implementation relies on Boost.Atomic for atomic operations which provides better portability. On Linux the implementation uses futexes directly, which should improve performance slightly. The event implementation choice should be more stable across different compiler versions because of these changes.
Partially reverts 89474f4a80 and a9738b1249. During the discussion on the ML, there was opinion that Boost.Log should not influence other libraries' configuration. This can cause ODR violations and cause surprises to the users.
The long term solution will be removal of Boost.ASIO and re-implementing network abstraction layer. For now users are required to configure each library separately. This requirement has been documented.
Boost.ASIO should not use compiler-based TLS unless it is allowed by the user of Boost.Log, otherwise the Boost.Log config option has no practical effect.
As a result, it becomes more probable that Boost.ASIO will be compiled with different config macros in Boost.Log and user's code. As a partial solution use
hidden visibility when building Boost.Log shared libs and ensure it uses its local copy of Boost.ASIO. Added a config test to detect support for visibility
command line option.
Also adjusted project names of other config tests to avoid possible name clashes with other libraries and Boost.Build infrastructure.
MSVC warning 4003 is now silenced on all compiler versions as apparently not only MSVC 8 is affected.