# log4cplus 2.1.2

  **IMPORTANT**: Dropping Visual Studio 2015 compatibility. It is no longer
  able to compile the thread pool source.

  - Implement `LOG4CPLUS_ASSERT_FMT()` - formats assertion message using C-style
    format string.

  - Implement `LOG4CPLUS_ASSERT_FORMAT()` - formats assertion message using
    C++20 `<format>` header facilities.

  - New configuration property: `log4cplus.threadPoolBlockOnFull`. When this
    property is `true` (default), threads will block when internal thread pool
    queue is full.

  - Warn about full internal thread pool queue when dropping events due to
    `log4cplus.threadPoolBlockOnFull` being `false`.


# log4cplus 2.1.1

  - Add missing source files to MSVC project files.

  - Resolve environment variables in `include` directive
    in configuration file. (Martin Engelmann)


# log4cplus 2.1.0

This release breaks ABI with 2.0.x. It is source compatible.

  - Throw exception on nonexistent properties file,
    if requested by `fThrow` flag.

  - Generate pkgconfig file with CMake.

  - Add locale support to ConsoleAppender. (Choy Kho Yee)

  - Initialize thread pool for async logging on demand.

  - SysLogAppender: Allow non-FQDN hostname
    in syslog messages.

  - Update Catch2 to v2.13.9.


# log4cplus 2.0.8

  - Add CMake alias libraries. GitHub issue #511.

  - Add an option to disable tests to `configure` script. (Fabrice Fontaine)

  - Fix C++11 compatibility: C++11 does not have `basic_string_view`.

  - Look for Android's `log` library. GitHub issue #543.

  - Fix handling of `,aux` extension for `FileAppender`. GitHub issue
    #534. (Pieter du Preez)

  - `filename` should not be empty for `TimeBasedRollingFileAppender`. GitHub
    issue #517. (Fox Chen)


# log4cplus 2.0.7

  - Fix compilation with C++20 compiler, use std::invoke_result.

  - TimeBasedRollingFileAppender: Clear files before `MaxHistory` when
    `CleanHistoryOnStart=false`.

  - Update embedded Catch2 to version v2.13.7 to compilation with current
    Glibc. GitHub issue #519.


# log4cplus 2.0.6

  - Fixes to internal thread pool.

  - Internal thread pool can now be disabled during compilation. Use
    `--disable-thread-pool` with Autotools based build or set
    `LOG4CPLUS_ENABLE_THREAD_POOL` to `OFF` with CMake based build.

  - Improved SONAME handling in CMake.

  - Update Catch to 2.13.4 to fix compilation on MacOS X on AArch64.


# log4cplus 2.0.5

  - Modernized CMake build.

  - Update iOS support to build for current hardware architectures. (Patch by
    Pawel Maczewski)

  - Fix issue with `std::va_list` value reuse.

  - Fix parsing of `include` in configuration when included file path contains
    `=`. (Patch by Peter Pei)

  - Fix build issue #455. Source file `callbackappender.cxx` is missing from
    Visual Studio project for static library.

  - Fix issue #415. Wrong base source file name is provided if path on Windows
    contains `/`.

  - Change of default behaviour: Instantiate thread pool with only 4 threads.


# log4cplus 2.0.4

  - Fix Catch2 include path. GitHub issue #379.

  - Disable POSIX signals reception in thread before creating pool
    threads. GitHub issue #385 and follow up issue #390.

  - Fix compilation with NVCC in CUDA mode. GitHub issue #375.

  - Fix compilation with Visual Studio in C++17 mode. GitHub issue #401.

  - Allow disabling implicit initialization through `configure` script option
    `--disable-implicit-initialization`, or CMake build option
    `LOG4CPLUS_REQUIRE_EXPLICIT_INITIALIZATION`. (MaksymB)

  - Remove `android` directory with obsolete Android support. GitHub
    issue #283.

  - Link with `libatomic` when necessary. (Fabrice Fontaine)


# log4cplus 2.0.3

  - Fix compilation on systems without `O_CLOEXEC`. This affects, e.g.,
    Solaris 10. GitHub issue #326. (Patch by Jiangrz).

  - Provide `log4cplus::deinitialize()` to make the API symmetric
    (`log4cplus::initialize()` already exists) and to allow
    de-/initialization without `log4cplus::Initializer` instance. GitHub
    issue #340.

  - Deal with `register` keyword being generated in SWIG based bindings. The
    keyword is unused and reserved in C++17. Remove use of
    `std::unary_function`, it was removed in C++17.

  - Add ability to define new log levels using C API. Add reconfiguration
    API. (Jens Rehsack)

  - Add `NDCMatchFilter` and `MDCMatchFilter`. (Franck)


# log4cplus 2.0.2

  - Allow setting thread pool size using new function
    `setThreadPoolSize()`. Allow setting the size from `log4cplus.properties`
    using `log4cplus.threadPoolSize` property. Lower initial thread pool size
    by half to `std::thread::hardware_concurrency()` threads. GitHub issue
    #315.

  - Fix Autotools based build for MinGW. GitHub issue #317.

  - Add `configure` script option `--enable-lto` to allow easier LTO builds.

  - Optimization of `getFormattedTime()`. (Alexey Vishtak)

  - Introduction of `LOG4CPLUS_MACRO_FILE()` used in logging macros to allow
    users to redefine it and consequently hide source file names from their
    compiled executables and logging output.


# log4cplus 2.0.1

  - Update to Automake 1.16.1.

  - Adjust `spi::LoggerFactory` to allow custom `spi::LoggerImpl`. GitHub
    issue #309.

  - Fix MacOS X compilation. GitHub issue #312.


# log4cplus 2.0

  - CMake improvements: Automate export of includes if building as Cmake
    sub-module. (Rodion Malinovsky)

  - Debian spec file improvements: Use parallel build. Fix installation path
    on 64bit. (Michal Marek)

  - CMake improvements: Use `${CMAKE_INSTALL_LIBDIR}` instead of hardcoding
    lib. (Radek Dostál)

  - Experimental Windows 10 ARM support through CMAKE


# log4cplus 2.0-RC2

  - Avoid copying whole message just to prepend message length in
    `SocketAppender`. Instead, use OS specific "gather" socket write.

  - Fixed GitHub issue #136.

  - `FileAppender` classes now have `TextMode` property that can be set to
    `Binary` or `Text` (default) to specify underlying IO stream behavior
    with respect to end-of-line handling. (Patch by raphaelmarcucci).

  - Fixed compilation issues when building log4cplus with Visual Studio and
    Clang toolchain.

  - Fixed various shutdown and initialization related deadlocks and
    crashes. GitHub issues #251, #253.

  - Fixed GitHub issue #243. Single-threaded build with Visual Studio and
    CMake were not single-threaded.

  - Fixed GitHub issue #250. Creating WiX based installer using CPack does
    not work because of missing license file.


# log4cplus 2.0-RC1

  - **IMPORTANT**: Implementation language is now C++11. OS specific
    implementations have been replaced by C++11 facilities wherever
    possible. This lowers complexity of the library and improves
    maintainability but it also brings limitations to when the library can be
    used. Specifically, the library should not be used before `main()` is
    entered and after `main()` is left. Even more specifically, the library
    should not be used during global objects construction and destruction.

  - log4cplus uses Catch unit testing framework and has unit tests.

  - log4cplus supports IPv6.

  - Autotools based build system is now partially generated from templates by
    the Autogen tool.

  - Autotools based build system can build both `wchar_t` and plain `char`
    variants at once.
