106 lines
3.2 KiB
Plaintext
106 lines
3.2 KiB
Plaintext
|
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] <https://sourceforge.net/tracker/?func=detail&aid=3056687&group_id=40830&atid=429073>
|
||
|
|
||
|
|
||
|
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 <time.h> 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.
|