##### Get log4cxx

- Download
- Changes
- License

##### About log4cxx

- What is log4cxx?
- API Documentation
- FAQ

##### Community

- Mailing Lists
- Issue Tracking
- Wiki

##### Development

- Repository
- Building
  - autotools
  - Apache Ant
  - Apache Maven 2
  - Microsoft Visual Studio
  - Apple Xcode

##### Apache

- Home
- Sponsorship
- Thanks
- Conferences

## Changes Report

### Release History

Version | Date | Description
--- | --- | ---
0.10.0 | 2008-04-03 | First Apache release
0.9.7 | 2004-05-10 |
0.9.6 | 2004-04-11 |
0.9.5 | 2004-02-04 |
0.9.4 | 2003-10-25 |
0.9.3 | 2003-09-19 |
0.9.2 | 2003-08-10 |
0.9.1 | 2003-08-06 |
0.9.0 | 2003-08-06 |
0.1.1 | 2003-07-09 |
0.1.0 | 2003-07-08 |
0.0.1 | 2003-05-31 |

### Release 0.10.0 - 2008-04-03

Type | Changes | By
--- | --- | ---
| logger.h includes config.h Fixes LOGCXX-2 . |
| Missing #else Fixes LOGCXX-3 . |
| initialization not working on many OS's Fixes LOGCXX-4 . |
| Preprocessor macro WIN32 used instead of _WIN32 Fixes LOGCXX-5 . |
| Win32 OutputDebugString Fixes LOGCXX-6 . |
| SocketAppender binary format not compatible with Chainsaw Fixes LOGCXX-7 . |
| Compilation problems using VC5 or VC6 with later Platform SDKs Fixes LOGCXX-8 . |
| Conflicting definitions of tchar.h/simulatenous Unicode+MBCS Fixes LOGCXX-10 . |
| Timezone may have side-effects Fixes LOGCXX-11 . |
| the threshold of ApenderSkeleton can not be set by calling setOption. Fixes LOGCXX-12 . |
| Add branch optimization hint to LOG4CXX_DEBUG macro Fixes LOGCXX-13 . |
| add -Wall to compile log4cxx will get many warning Fixes LOGCXX-14 . |
| PatternLayout don't use locale time zone,it's use GMT tome zone Fixes LOGCXX-15 . |
| Misleading statements in Introduction to log4cxx Fixes LOGCXX-16 . |
| Use of non reentrant time functions Fixes LOGCXX-17 . |
| LoggerStream Feature Fixes LOGCXX-18 . |
| Add .cvsignore's to ignore generated files Fixes LOGCXX-19 . |
| Add check that libxml2 not libxml has been included Fixes LOGCXX-21 . |
| Backslashes in filenames in XML config of FileAppender broken Fixes LOGCXX-22 . |
| Unit tests have become stale Fixes LOGCXX-23 . |
| Class and module name not available in LogEvent Fixes LOGCXX-24 . |
| Add Ant+cpptasks build file Fixes LOGCXX-25 . |
| Default initialization is broken Fixes LOGCXX-26 . |
| Appender threshold cannot be set in configuration files Fixes LOGCXX-27 . |
| Appender threshold cannot be set in configuration files Fixes LOGCXX-28 . |
| Appender attributes are not passed passed to setOption correctly. Fixes LOGCXX-29 . |
| StringTokenizer uses evil strtok and wcstok functions Fixes LOGCXX-30 . |
| Missing const qualifiers, Exception::getMessage() in particular. Fixes LOGCXX-31 . |
| Missing copy constructors and assignment operators Fixes LOGCXX-32 . |
| log4cxx::Exception is not derived from std::exception Fixes LOGCXX-33 . |
| Visual Studio 6 CVS build broken Fixes LOGCXX-34 . |
| Avoid use of MSXML Fixes LOGCXX-35 . |
| Migrate to Apache Portable Runtime threads Fixes LOGCXX-36 . |
| Unable to build log4cxx under Borland C++ Fixes LOGCXX-37 . |
| Remove DailyRollingFileAppender Fixes LOGCXX-39 . |
| PatternLayout does not support Java date format specifiers Fixes LOGCXX-40 . |
| Layout timestamp doesn't seem to adjust for daylight saving Fixes LOGCXX-41 . |
| configure/make help needed Fixes LOGCXX-43 . |
| GUMP integation Fixes LOGCXX-44 . |
| _T causes error : 1048576 cannot be used as a function Fixes LOGCXX-45 . |
| Extra semicolon after namespace closing paren Fixes LOGCXX-46 . |
| Check headers for missing declarations and Effective C++ violations Fixes LOGCXX-47 . |
| Use hex representation for thread identifier Fixes LOGCXX-48 . |
| Move timezone specification into pattern, remove locale specification Fixes LOGCXX-49 . |
| variable name clash in macro Fixes LOGCXX-50 . |
| Migrate log4j 1.3 RollingFileAppender Fixes LOGCXX-52 . |
| Problems compiling with MsDev 6.0 (space in paths) Fixes LOGCXX-53 . |
| Eliminate use of boost-regex in unit tests Fixes LOGCXX-54 . |
| DailyRolling File Appender Fixes LOGCXX-55 . |
| BasicConfiguration is unreliable Fixes LOGCXX-56 . |
| Port log4j performance test Fixes LOGCXX-57 . |
| ImmediateFlush'd FileAppenders extremely slow on Windows Fixes LOGCXX-58 . |
| Implement encoding support for Writer appender Fixes LOGCXX-59 . |
| XML layout can be mismatched with document encoding Fixes LOGCXX-60 . |
| log4cxx 0.10.0 release Fixes LOGCXX-62 . |
| Platform appropriate line-feed convention Fixes LOGCXX-63 . |
| Migrate to APR network IO Fixes LOGCXX-64 . |
| SyslogAppender append method currently stubbed out Fixes LOGCXX-66 . |
| NTEventLogAppender always uses RPC method for logging and has inadequate error handling. Fixes LOGCXX-67 . |
| Logic flaws in StringHelper::startsWith and StringHelper::endsWith Fixes LOGCXX-70 . |
| Update performance page on web site Fixes LOGCXX-71 . |
| INSTALL out of date Fixes LOGCXX-72 . |
| Not loading configuration from log4cxx.properties or log4cxx.xml Fixes LOGCXX-73 . |
| MinGW build Fixes LOGCXX-74 . |
| Cygwin build Fixes LOGCXX-75 . |
| user.home, user.dir, java.io.tmpdir available within configuration files Fixes LOGCXX-76 . |
| Static builds broken Fixes LOGCXX-77 . |
| configure check for apr-util Fixes LOGCXX-79 . |
| Migrated network appenders to APR network IO Fixes LOGCXX-80 . |
| SimpleDateFormat does not compile on Solaris 2.95.2 gcc Fixes LOGCXX-81 . |
| Compiling with stream.h in multiple object files errors Fixes LOGCXX-82 . |
| log4cxx::Level::ERROR fails to compile when GDI enabled Fixes LOGCXX-83 . |
| Problems with stream logging in UTF8, no WCHAR_T build Fixes LOGCXX-84 . |
| Mac OS/X fixes and enhancements Fixes LOGCXX-85 . |
| Add TRACE level Fixes LOGCXX-86 . |
| Remove remaining uses of Category and Priority Fixes LOGCXX-87 . |
| Explore use of security-enhanced CRT methods Fixes LOGCXX-88 . |
| simplesocketserver.cpp should use LOG4CXX_STR("...") not L"..." Fixes LOGCXX-94 . |
| Gump build fails for log4cxx-ant-no-wchar-t target Fixes LOGCXX-98 . |
| Fixes for ODBCAppender Fixes LOGCXX-100 . |
| Much of CVS HEAD seems #if 0 out, especially ResourceBundle stuff Fixes LOGCXX-103 . |
| ODBCAppender::close does not check if appender is already closed Fixes LOGCXX-104 . |
| Infinite loop in string replacing Fixes LOGCXX-105 . |
| maxFileSize has bad type in SizeBasedTriggeringPolicy file Fixes LOGCXX-106 . |
| Can't compile log4cxx in ascii on Windows Fixes LOGCXX-107 . |
| try fix 64bit log4cxx_intptr_t Fixes LOGCXX-110 . |
| make Logger cache a LoggerRepositoryPtr instead of a "blind" pointer Fixes LOGCXX-111 . |
| change "static" to "auto" for Transcoder::decode() decoder and CharsetDecoder::getDefaultDecoder() decoder Fixes LOGCXX-112 . |
| separate apr detection m4 codes from aclocal.m4 Fixes LOGCXX-113 . |
| Upgrade APR to 1.2.2 from 1.1.0 Fixes LOGCXX-114 . |
| SVN head does not compile with Borland C++ compiler Fixes LOGCXX-115 . |
| SVN head does not compiler with MinGW compiler Fixes LOGCXX-116 . |
| Memory leak with ThreadSpecificData on Win32 Fixes LOGCXX-117 . |
| Hierarchy corrupts with PropertyConfigurator Fixes LOGCXX-118 . |
| ndctestcase not working Fixes LOGCXX-119 . |
| Wrong parameter description in Patternlayout Fixes LOGCXX-120 . |
| UTF-8 build fails on Linux Fixes LOGCXX-123 . |
| wchar_t constructor missing in class NDC Fixes LOGCXX-124 . |
| L7dTestCase is stubbed out Fixes LOGCXX-125 . |
| std::cout stops working if log4cxx is first to output Fixes LOGCXX-126 . |
| Main build.xml not referencing "env" properly. Fixes LOGCXX-127 . |
| Asyncappender is full of race conditions (improper use of condition variables) Fixes LOGCXX-129 . |
| Compile fails on gcc4.1 Fixes LOGCXX-130 . |
| TimeBasedRollingPolicy is declared "abstract" Fixes LOGCXX-131 . |
| various segmentation faults in multithreaded application Fixes LOGCXX-132 . |
| Missing parenthesis in LOG4CXX_ASSERT Fixes LOGCXX-133 . |
| FileAppender could create missing directories Fixes LOGCXX-134 . |
| Use std::string with logstream Fixes LOGCXX-135 . |
| DailyRollingFileAppender not using Property options Fixes LOGCXX-136 . |
| XMLLayoutTestCase output and filtered output gets overwritten Fixes LOGCXX-138 . |
| XMLLayoutTestCase uses inadequate filters for 64 bit platforms Fixes LOGCXX-139 . |
| Handle leak with LoggingEvent::getCurrentThreadName Fixes LOGCXX-140 . |
| Upgrade to APR 1.2.7 or later Fixes LOGCXX-141 . |
| socketservertestcase.cpp does not compile with Sun Studio 11 on Solaris Fixes LOGCXX-142 . |
| -xarch=v8plus should be removed from Makefile.in Fixes LOGCXX-143 . |
| DailyRollingFileAppender::~DailyRollingFileAppender must call finalize Fixes LOGCXX-146 . |
| make dist does not work Fixes LOGCXX-149 . |
| logstream's operator < < declared in the wrong namespace Fixes LOGCXX-150 . |
| Umlauts as literal in patternlayout won't be logged correct Fixes LOGCXX-151 . |
| gcc warning about cast from `const void*' to `log4cxx::helpers::Object*' discards qualifiers from pointer target typ Fixes LOGCXX-152 . |
| Automate log4cxx site and doxygen generation and deployment Fixes LOGCXX-153 . |
| Update source headers per new ASF header policy Fixes LOGCXX-155 . |
| immediate flush in console appender Fixes LOGCXX-156 . |
| make install fails since @manual_dest@ replacement is missing in Makefiles Fixes LOGCXX-157 . |
| tolower not defined in stringhelper.cpp Fixes LOGCXX-158 . |
| Initialization of local static objects out of order on Linux Fixes LOGCXX-159 . |
| helpers/object.h: DECLARE_LOG4CXX_OBJECT macro definition is missing virtual destructor declaration Fixes LOGCXX-160 . |
| Using RollingFileAppender increases the working set with each rollover Fixes LOGCXX-161 . |
| Problem printing string with embedded NULL character Fixes LOGCXX-162 . |
| liblog4cxx (svn 480882) does not link on Mac OS X 10.4 Fixes LOGCXX-163 . |
| XMLSocketAppender is disabled Fixes LOGCXX-164 . |
| XMLSocketAppender may generate erroneous output due to mismatched encoding Fixes LOGCXX-165 . |
| system locale charmap is not determined properly on Fedora Core 6 Fixes LOGCXX-167 . |
| log4j.dtd does not contain rollingPolicy and other o.a.l.r.RFA elements Fixes LOGCXX-168 . |
| XMLLayoutTestCase fails on compilers that do not provide location info Fixes LOGCXX-169 . |
| Add project description file for projects.apache.org Fixes LOGCXX-171 . |
| configure fail with ".infig.status: error: cannot find input file:" Fixes LOGCXX-172 . |
| APRCharsetEncoder is not thread safe Fixes LOGCXX-175 . |
| SocketImpl::accept uses private APR function: apr_wait_for_io_or_timeout Fixes LOGCXX-177 . |
| Link failure if wchar_t cannot be determined as UTF-16 or UTF-32 Fixes LOGCXX-178 . |
| example applications do SIGABRT on aix 5.2 Fixes LOGCXX-179 . |
| Build fails at domconfigurator.h Fixes LOGCXX-180 . |
| Level::DEBUG and other non-local statics cause crash on app shutdown on AIX Fixes LOGCXX-181 . |
| missing man page for simplesocketserver Fixes LOGCXX-182 . |
| Compiler warning: dereferencing type-punned pointer will break strict-aliasing rules Fixes LOGCXX-183 . |
| Crash when log level set to 'inherited' Fixes LOGCXX-184 . |
| Garbage characters in log files when log requests from multiple threads with hyperthreading enabled Fixes LOGCXX-186 . |
| LogLog::emit() could potentially interleave messages Fixes LOGCXX-187 . |
| Upgrade to apr 1.2.9 and apr-util 1.2.8 Fixes LOGCXX-188 . |
| Migrate to Maven 2.0 for documentation and packaging Fixes LOGCXX-189 . |
| The 'logger.h' header includes itself. Fixes LOGCXX-190 . |
| Application cores when syslog appender is given an unreachable host/ip. Fixes LOGCXX-191 . |
| Suggested improvements to log4cxx webpages Fixes LOGCXX-192 . |
| Please rename or remove new local variable "buf" in Logger.h macros Fixes LOGCXX-193 . |
| Garbage in log files when appenders are defined in multiple levels of the logger hierarchy Fixes LOGCXX-194 . |
| Syslog appender adds characters to output. Fixes LOGCXX-195 . |
| Syslog appender destructor can cause core Fixes LOGCXX-196 . |
| ant can't generate vc6 project Fixes LOGCXX-197 . |
| Implement compression for RollingFileAppender Fixes LOGCXX-200 . |
| Visual Studio 6 build Fixes LOGCXX-201 . |
| ObjectPtrT has inconsistent const-ness on accessors Fixes LOGCXX-202 . |
| PatternParserTestCase and FileNamePatternTestCase fail only with VC6 Fixes LOGCXX-204 . |
| isTraceEnabled implemenation missing in logger.cpp (Revision: 592627) Fixes LOGCXX-208 . |
| A message of type wchar_t* is not beeing written correctly to the internal message buffer (Revision: 592627) Fixes LOGCXX-209 . |
| HTMLLayout NDC null check Fixes LOGCXX-210 . |
| Crash(Segmentation Fault) in DailyRollingFileAppender when file change Fixes LOGCXX-211 . |
| unittest failed Fixes LOGCXX-212 . |
| trace method implementation is missing Fixes LOGCXX-213 . |
| Possible memory leak due to fault in build process (via make) Fixes LOGCXX-214 . |
| Eliminate sqlext.h from odbcappender.h Fixes LOGCXX-215 . |
| crash on program exit Fixes LOGCXX-216 . |
| Not initialized LoggerPtr segfault program. Fixes LOGCXX-217 . |
| Visual Studio 8 build Fixes LOGCXX-218 . |
| suspicious warnings Fixes LOGCXX-219 . |
| Memory leaks when using MFC Fixes LOGCXX-220 . |
| ThreadID layout does not match debugger Fixes LOGCXX-221 . |
| trunk compile error. Fixes LOGCXX-222 . |
| Migrate unit tests from LGPL'd CPPUNIT to an ASL'd testing framework Fixes LOGCXX-225 . |
| Default configurator uses *.properties in preference to *.xml Fixes LOGCXX-226 . |
| Remove @since tags Fixes LOGCXX-227 . |
| Remove @author tags Fixes LOGCXX-228 . |
| Align ant build options with automake Fixes LOGCXX-230 . |
| Deadlock in AsyncAppender Fixes LOGCXX-231 . |
| Drop src/performance Fixes LOGCXX-232 . |
| Unnecessary casts in ObjectPtrT Fixes LOGCXX-233 . |
| Assignment operator removes const qualifier Fixes LOGCXX-234 . |
| Add ObjectPtrT::exchange Fixes LOGCXX-235 . |
| Re-order constructor initialiser lists to match declaration order Fixes LOGCXX-236 . |
| Include missing headers Fixes LOGCXX-237 . |
| Inconsistent const qualification on logging methods. Fixes LOGCXX-239 . |
| Non-ascii named files have names mangled Fixes LOGCXX-241 . |
| Eliminate log4cxx proxies for APR types Fixes LOGCXX-242 . |
| Problem Compile in Doxy Fixes LOGCXX-243 . |
| Config refresh hangs a client application that uses TelnetAppender Fixes LOGCXX-246 . |
| MSVC project has wrong additional include directories Fixes LOGCXX-247 . |
| ODBCAppender has unicode issues Fixes LOGCXX-248 . |
| NDC::cloneStack and NDC::inherit missing in 0.10.0 RC2 Fixes LOGCXX-251 . |
| Add documentation for use of operator < < in logging requests Fixes LOGCXX-252 . |
| Transcoder compilation error with utf-8 charset Fixes LOGCXX-253 . |
| Add build option for static C RTL Fixes LOGCXX-254 . |
| SocketHubAppender fails after accepting connection Fixes LOGCXX-256 . |
| ServerSocket::accept hangs on Unix Fixes LOGCXX-257 . |
| unable to build from make dist package due to missing doxygen file Fixes LOGCXX-258 . |
| Several appenders fail to compile in Visual Studio 2008 Fixes LOGCXX-259 . |

### Release 0.9.7 - 2004-05-10

Type | Changes | By
--- | --- | ---
| Fixed examples source code in the "Short introduction to log4cxx". |
| Fixed, in the renaming algorithm of RollingFileAppender and DailyRollingFileAppender, a problem specific to Unicode. |
| Fixed conflict with Windows macros "min" and "max", by renaming StrictMath::min and StrictMath::max to StrictMath::minimum and StrictMath::maximum. |
| Port to HPUX 11.0. |
| Fixed segmentation fault in PropertyConfigurator. |
| Port to Solaris. |
| Fixed MutexException thrown while destroying RollingFileAppender. |
| Logging macros can be used without explicity declaring the use of log4cxx namespace. |
| Fixed static library unresolved externals for msvc 6 and 7.1 |

### Release 0.9.6 - 2004-04-11

Type | Changes | By
--- | --- | ---
| Timezone management has been optimized through the class TimeZone |
| Inter-thread synchronization and reference counting has been optimized |
| Reference counting now uses gcc atomic functions (bug 929078) |
| Use of StringBuffer has been optimized. |
| Support of localisation throug resourceBundles |
| SyslogAppender now uses the system function 'syslog' to log on the local host. (only for POSIX systems) |
| Added TimeZone configuration to PatternLayout (bug 912563) |
| Support of the DailyRollingFileAppender (feature request 842765) |

### Release 0.9.5 - 2004-02-04

Type | Changes | By
--- | --- | ---
| Port of log4j Jnuit tests with Cppunit and Boost Regex. |
| Added explicit exports for MSDEV 6 and MSDEV 7 (no further need of .def files) |
| Custom levels can be configured through the DOMConfigurator and PropertyConfigurator classes (Level inherites from Object) |
| Added a reference counter to LoggingEvent to avoid useless copies (LoggingEvent inherites from Object) |
| The file log4j.xml as well as the file log4j.properties are now search for, in log4cxx initialization. |
| The root logger can be assigned the "OFF" level. |
| Added MSVC6 project missing files mutext.cpp and condition.cpp (bug 847397) |
| condition.cpp now compiles with MSVC6 (bug 847417) |
| fixed pure virtual function call in PropertyConfigurator::configureAndWatch (bug 848521) |
| XMLAppender now displays correct timestamp with MSVC 6 (bug 852836) |
| SRLPORT 4.6 support. |
| Fixed an infinite loop in class Properties. |
| Fixed compilations problems with unicode. |
| Fixed SocketAppender bug concerning MDC and NDC. |

### Release 0.9.4 - 2003-10-25

Type | Changes | By
--- | --- | ---
| StringBuffer has been optimized. |
| Fixed miscellaneous threading problems. |
| Added TimeZone support in PatternLayout (bug 796894) |
| Fixed threading configuration problems (bug 809125) |
| Fixed miscellaneous MSVC and cygwin compilation problems. |

### Release 0.9.3 - 2003-09-19

Type | Changes | By
--- | --- | ---
| Changed tstring to log4cxx::String and tostringstream to log4cxx::StringBuffer. |
| Fixed MSVC 2003 compilation erros and warnings. |
| Added helpers for NDC and MDC. |
| Added TimeZone support in TTCCLayout. |
| Fixed compilation problems with logger macros (LOG4CXX_...) |
| Fixed milliseconds formatting problem with MSVC 6.0 and 2003 |
| Fixed AsyncAppender crash |
| Added new tests |
| Added benchmarks |

### Release 0.9.2 - 2003-08-10

Type | Changes | By
--- | --- | ---
| Fixed FreeBSD compilation problem with pthread mutex (class CriticalSection). |
| Fixed milliseconds formatting problem (class DateFormat). |
| Long events ( > 1024 chars) are now supported in the class XMLSocketAppender. |
| Carriage returns have been normalized in the class XMLLayout. |

### Release 0.9.1 - 2003-08-06

Type | Changes | By
--- | --- | ---
| Fixed deadlock problems in classes Logger and AsyncAppender. |
| Fixed MSVC 6.0 compilation problems. |
| Added MSVC 6.0 static libraty project. |
| Default configuration for the SMTP options is "no". |

### Release 0.9.0 - 2003-08-06

Type | Changes | By
--- | --- | ---
| Added ODBCAppender (matching log4j JDBCAppender) |
| Added SyslogAppender |
| Added SMTPAppender (only for Linux/FreeBSD) |
| Added BasicConfigurator |
| Added a FileWatchDog in PropertyConfigurator and DOMConfigurator |
| Possibility to load a custom LoggerFactory through the DOMConfigurator |
| Changed time precision from seconds to milliseconds |
| Added MSVC 6.0 'Unicode Debug' and 'Unicode Release' targets |
| Added Java like System class. |

### Release 0.1.1 - 2003-07-09

Type | Changes | By
--- | --- | ---
| Fixed MSVC 6.0 compilation problems concerning the 'Release' target |
| Added MSVC 6.0 tests projects |

### Release 0.1.0 - 2003-07-08

Type | Changes | By
--- | --- | ---
| FreeBSD Autotools/Compilation support |
| Fixed TelnetAppender crash when a socket bind exception occured. |
| Added log4j DTD support to XMLLayout and DOMConfigurator |
| Can now send events in XML format over TCP (class XMLSocketAppender) for the log4j Chainsaw UI |
| Now compiles with 'configure --enable-unicode' (UTF16 Unicode support) |
| Added Java like Properties class. It's a helper for the PropertyConfigurator |
| Added Java like objects with dynamic cast and instanciation. Custom objects can be configured through the DOMConfigurator and PropertyConfigurator classes |
| Port of the PropertyConfigurator class |
| Port of the "Map Diagnostic Context" (MDC) class |
| Added 13 tests (try make check) |

### Release 0.0.1 - 2003-05-31

Type | Changes | By
--- | --- | ---
| Loggers, Hierarchy, Filters, Appenders, Layouts, NDC |
| Appenders: AsyncAppender, ConsoleAppender, FileAppender, NTEventLogAppender, RollingFileAppender, SocketAppender, SocketHubAappender, TelnetAppender |
| Layouts: HTMLLayout, PatternLayout, SimpleLayout, TTCCLayout, XMLLayout |
| Filters: DenyAllFilter, LevelMatchFilter, LevelRangeFilter, StringMatchFilter |
| Configurators: DOMConfigurator |