Apache logging services logo Apache log4j logo

Building Apache log4cxx with autotools

Quick start:

Make sure autoconf 2.50+, libtool, g++ and make are available, install or build apr 1.x, apr-util 1.x, gzip and zip.

$ apt-get install build-essential automake libtool libapr1-dev libaprutil1-dev gzip zip
$ cd apache-log4cxx-x.x.x
$ ./configure
$ make
$ make check
$ sudo make install

Those lines in brackets are only necessary if you directly build from source.

configure options

--with-apr path to non-default location for APR.
--with-apr-util path to non-default location for APR-Util.
--enable-wchar_t Enable wchar_t API methods, choice of yes (default), no.
--enable-unichar Enable UniChar API methods, choice of yes, no (default).
--enable-cfstring Enable CFString API methods, requires Mac OS/X CoreFoundation, choice of yes, no (default).
--with-logchar Interal character representation, choice of utf-8 (default), wchar_t , unichar.
--with-charset Exteral character encoding, choice of utf-8, iso-8859-1, usascii, ebcdic, auto (default).
--with-SMTP SMTP implementation for SMTPAppender, choice of libesmtp, no (default).
--with-ODBC OBDC implementation for ODBCAppender, choice of unixODBC, iODBC, Microsoft, no (default).
-help Display help showing all options and exit.

SMTP and ODBC options can depend on libraries that that have different licenses. You should review the corresponding licenses and understand the implications before redistribution.

Platform specific notes:

Mac OS/X:

APR and APR-Util are provided by the platform in Mac OS/X 10.5 and iODBC in 10.4.


APR, APR-Util, gzip and zip may be installed by:

$ sudo apt-get install libapr1-dev libaprutil1-dev gzip zip


APR, APR-Util, gzip and zip may be installed from the ports collection by:

# cd /usr/ports/archivers/zip
# make
# make install
# cd /usr/ports/archivers/gzip
# make
# make install
# cd /usr/ports/devel/apr
# make
# make install


Install zip (used by RollingFileAppender) and sed (used to normalize output files for comparison in the unit tests). The prepackaged APR currently available from Cygwin has APR_HAS_THREADS == 0. Some appenders will not be available and some may operate with reduced functionality. There have been reports of building APR on Cygwin with threads enabled.


Recent APR 1.2.x releases fail ./configure with a error of "decision on anonymous shared memory failed". That issue has been fixed in the current APR SVN HEAD. The follow sequence worked with MSYS (with Python on Path):

$ cd expat-2.0.1
$ ./configure
$ make install
$ cd ..
$ svn co https://svn.apache.org/repos/asf/apr/apr/trunk apr
$ cd apr
$ ./buildconf.sh
$ ./configure
$ make install
$ cd ..
$ svn co \
   https://svn.apache.org/repos/asf/apr/apr-util/trunk \
$ cd apr-util
$ ./buildconf.sh
$ ./configure --with-apr=/usr/local --with-expat=/usr/local
$ make install
$ cd ../apache-log4cxx-0.10.0
$ ./configure --with-apr=/usr/local \
   --with-apr-util=/usr/local --with-logchar=wchar_t
$ make install

Running "make check" was observed to fail with unexpected exceptions in streamtestcase and datetimedateformattestcase. See LOGCXX-244.