Log4cxx Dependencies

As of version 0.12.0, Log4cxx requires a minimum C++ version of C++11.

Log4cxx requires the following software to build and/or run correctly:

Dependency NameVersionDependency TypeHomepage
Apache Portable Runtime(APR)>=1.5.4Compile/Runtimehttps://apr.apache.org
APR-Util>=1.5.4Compile/Runtimehttps://apr.apache.org
gzipanyTest/Runtime(optional)https://gzip.org
sedanyTestN/A
zipanyTest/Runtime(optional)N/A

APR+APR-Util

The Apache Portable Runtime(APR) provides the cross-platform backend for log4cxx. Both APR and APR-util need to be installed and available on your system.

sed+gzip+zip

These applications are needed during test of log4cxx. gzipand sed are generally installed by default on Linux. zip may not be installed by default; check your distribution's documentation for information on how to install these applications.

For Windows, you will have to install those tools through a system such as MinGW, cygwin, or MSYS2.

gzip and zip only needed during runtime if you are compressing the log files, for example by setting a rollover policy which ends in .gz or .zip.

Optional Dependencies

The following table lists CMake options that require additional dependencies.

CMake optionDependency NameVersionDependency TypeHomepage
LOG4CXX_MULTIPROCESS_ROLLING_FILE_APPENDERBoostanyCompile/runtime. Not required if your compiler supports C++17https://boost.org
ENABLE_FMT_LAYOUT{fmt}9+Compile/runtimehttps://github.com/fmtlib/fmt
LOG4CXX_ENABLE_ODBCunixodbcanyCompile/runtime (not on Windows)https://www.unixodbc.org/
LOG4CXX_ENABLE_ESMTPlibesmtpanyCompile/runtime (not on Windows)https://github.com/libesmtp/libESMTP
LOG4CXX_QT_SUPPORTQt5Compile/runtimehttps://www.qt.io/download
LOG4CXX_CFSTRINGMac OS/X Core FoundationanyCompile/runtimehttps://developer.apple.com/documentation/corefoundation

A note on C++ version and Boost

By default, Log4cxx requests C++20 features. This is to avoid 3rd party dependencies as much as possible. If C++17 is not available, a search for Boost will be taken and those libraries will be used instead. If you would prefer to use Boost, there are two options you have:

  1. Pass -DPREFER_BOOST=ON to CMake when compiling. This will ignore the results of the tests that check for the standard version of components that are required. Note that this will switch all components, regardless of the C++ version in effect at compile time.
  2. Revert to an earlier standard using -DCMAKE_CXX_STANDARD=11 for example. This will still to check for standard versions of required components, but it will fall back to using Boost for newer components added in C++17.

Licenses(direct dependencies only)

DependencyLicense
APR, APR-utilApache License, Version 2.0
BoostBoost License, Version 1.0
{fmt}MIT
unixodbcLGPL
libesmtpLGPL
QtRefer https://www.qt.io/licensing/
Mac OS/X Core FoundationAPSL 2.0