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)
- Filtering filters (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.

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.


