Short Description ================= log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modeled after the Java log4j API. Latest Project Information ========================== The latest up-to-date information for this project can be found at http://log4cplus.sourceforge.net. Please submit bugs, patches, feature requests, etc. there. Current Status ============== This library has now reached "Production" status. Tested on the following platforms ================================= - Linux/AMD64 with GCC 4.1.2 and 4.3.2 - FreeBSD/i386 and AMD64 with GCC 3.4.6, 4.2.1 and 4.3.3 - Windows XP with MS Visual C++ 8.0, 9.0 and 10.0 - OpenSolaris 5.11 with Sun C++ 5.10 SunOS_i386 128229-02 2009/09/21, with -library=stlport4 Notes ===== Cygwin/MinGW ------------ Some version of GCC (3.4.x and probably some of 4.x series too) on Windows (both Mingw and Cygwin) produces lots of warnings of the form "warning: inline function 'void foo()' is declared as dllimport: attribute ignored." This can be worked around by adding -Wno-attributes option to GCC command. Unfortunatelly, not all affected version of GCC have this option. Threads and signals ------------------- log4cplus is not safe to be used from async signals' handlers. This is a property of most threaded programmes in general. If you are going to use log4cplus in threaded application and if you want to use log4cplus from signal handlers then your only option is to block signals in all threads but one that will handle all signals. On POSIX platforms, this is possible using the sigwait() call. log4cplus enables this approach by blocking all signals in any threads created through its threads helpers. AIX --- There appears to be a reentracy problem with AIX 5.3 and xlC 8 which can result into a deadlock condition in some curcumstances. It is unknown whether the problem manifests with other versions of either the OS or the compiler, too. The problem was initially reported in a bug report #3056687 ([1]). The core of the problem is that IBM's/xlC's standard C++ IOStreams implementation uses global non recursive lock to protect some of its state. The application in the bug report was trying to do logging using log4cplus from inside overflow() member function of a class derived from std::streambuf class. log4cplus itself uses std::ostringstream. This resulted into an attempt to recursivly lock the global non recursive lock and a deadlock. [1] Unsupported compilers --------------------- log4cplus does not support too old and broken C++ compilers: - Visual C++ prior to 7.1 - GCC prior to 3.2 - All Borland/CodeGear/Embarcadero C++ compilers Unsupported platforms --------------------- log4cplus requires some minimal set of C and/or C++ library functions. Some systems/platforms fail to provide these functions and thus log4cplus cannot be supported there: - Windows CE - missing implementations of functions License ======= This library is licensed under the Apache Public License 2.0 and two clause BSD license. Please read the included LICENSE file for details.