Introduction
============
Log4cxx is a port to C++ of the log4j project.
The goal is have the same functionnalities and interfaces of log4j.

Features
========
It's a flexible and highly configurable logging framework
Main features :
- Configurable logging destinations (appenders)
- Configurable logging format (layouts)
- Categorized logging statements through a hierarchy (loggers)
- Advanced filtering (filters)
- Thread safe library
- UTF-16 Unicode support

* Appenders:
  AsyncAppender, ConsoleAppender, FileAppender, NTEventLogAppender,
  ODBCAppender, RollingFileAppender, SMTPAppender, SocketAppender,
  SocketHubAappender, SyslogAppender, TelnetAppender, XMLSocketAppender

* Layouts:
  HTMLLayout, PatternLayout, SimpleLayout, TTCCLayout, XMLLayout

* Filters:
  DenyAllFilter, LevelMatchFilter, LevelRangeFilter, StringMatchFilter

* Configurators:
  BasicConfigurator, DOMConfigurator, PropertyConfigurator

* Java like objects with dynamic cast and instanciation. Custom objects can
  be configured through the DOMConfigurator and PropertyConfigurator classes

Supported OS
============
* Linux
* FreeBSD
* Windows (MSVC 6.0 or Cygwin)
* Othe POSIX OS should be supported but were not tested

Installation
============
./autogen.sh
./configure
make
make check
make install

See INSTALL file for further details.

Visual Studio .Net 2003 considerations
======================================
By default, Visual .Net 2003 eliminates exports that are never referenced.
So all appenders and layouts are eliminated by the linker if they are not explicitly
referenced in a new project linking with the log4cxx static library
But theses functions have to be referenced for the needs of the PropertyConfigurator
and DOMConfigurator classes.

So, in the new project, some of the properties need to be changed:
Linker -> Optimization -> References
Change from "Default" to "Keep Unreferenced Data (/OPT:NOREF)"

This problem does not exist with dll version of the log4cxx library.

Unitary Tests
=============
You will need to install
* cppunit (http://cppunit.sourceforge.net/)
* boost regex (http://www.boost.org/)

Unix : run "make check"
Windows : run msvc/tests/runtests.bat

Performance Tests
=================
Just run performance/logging.sh.
The result are expressed in micro-seconds.

Links
=====
http://log4cxx.sourceforge.net
	Log4cxx project page

http://sourceforge.net/projects/log4cxx
	Sourceforge page

http://jakarta.apache.org/log4j/
	Log4j project page

Contacts
========
See AUTHORS file

License
=======
This library is licensed under the Apache Public License.  Please read the
included license.apl for details.


