Apache Log4cxx  Version 1.3.0
Loading...
Searching...
No Matches
Change Log

Release History

Version Date Description
1.3.0 2024-10-21 Maintenance release
1.2.0 2024-01-01 Maintenance release
1.1.0 2023-05-01 General bugfix release
1.0.0 2023-01-01 Major release to standardize the library and make it ABI stable
0.13.0 2022-04-15 Maintenance release
0.12.1 2021-09-21 Bugfix for 0.12.0
0.12.0 2021-05-01 First release to require C++11. Updates for smart pointers. Standardization on CMake for building.
0.11.0 2020-08-09 Maintenance release.
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 1.3.0 - 2024-XX-XX

Release 1.3.0 includes the following new features:

  • Overhead reduction of upto 60% sending logging events to an appender
  • Statistics on the AsyncAppender's queue length (in Log4cxx debug output)
  • Fuzz tests along with Google OSS-Fuzz integration

The following issues have been addressed:

  • MSYS2/MINGW build errors [#389]
  • thread_local problems in MSYS2/MINGW [#394]
  • A potential 'use after free' fault when using AsyncAppender [#397]

Release 1.2.0 - 2024-01-01

The following issues have been addressed:

  • The locale external character encoding option reverting to US-ASCII [LOGCXX-483]
  • A segfault during process exit when log4cxx::LogManager::shutdown is not called [#268] [#219]
  • The cmake option to include a MultiprocessRollingFileAppender did not work
  • Build failure in a MSYS2 environment
  • Format settings (e.g. std::hex) were retained across LOG4CXX_XXXXX macro logging requests
  • When the APR library was built without support for threads (APR_HAS_THREADS=0):
    • the AsyncAppender and dynamically loaded configuration changes were not available
    • a single nested/mapped diagnostic context (NDC/MDC) would be used and updated (without synchronization)
  • On Windows, GetThreadDescription() called for each logging event when the thread name was empty [#321]

Release 1.2.0 includes the following new features:

  • LOG4CXX_XXXX macros now support logging of QStrings directly
  • log4cxx::hexdump function that returns a string of hexadecimal byte values
  • Ability to remove a HierarchyEventListener [#233]
  • Less string copying when sending a logging event to an appender
  • Less frequent mutex contention when logging from multiple threads concurrently [#320]
  • Allow thread information to be included in JSON formatted output
  • Optional support for logging during process termination [#271]
  • A cmake option to place Log4cxx functions in a different namespace [#277]
  • Optionally use std::format in LOG4CXX_XXXX_FMT macros instead of fmt::format [#291]
  • Support for per object enabling/disabling of logging requests (see log4cxx::LoggerInstancePtr)

Note: the LOG4CXX_CHARSET cmake option (external character encoding) default value has changed to utf-8

Release 1.1.0 - 2023-05-01

This is a general maintenance release. The following bugs/issues have been fixed:

  • Fix CVE-2023-31038
  • Fix to build on Windows Server 2016
  • Fix compiling errors with older compilers
  • Make ODBC and SMTP opt-in instead of automatic
  • Parameterize statements for ODBC inserts. Add new generic DBAppender class that uses APR for database support
  • Fix Qt support

Release 1.0.0 - 2023-01-01

This is a major release that fixes a number of long-standing issues and is desinged to make Log4cxx ABI stable moving forward. A few notes on this version:

  • Removed log4j style Java serialization. Due to Java's inherent problems with serialization, and the fact that Chainsaw no longer supports it, it has been completely removed.
  • A number of obsolete classes have been removed
    • Removal of TTCCLayout. If you still want this layout, use a PatternLayout with a format similar to the following: %r [%t] %-5p - %m%n
    • Removal of DateLayout. Use PatternLayout instead.
  • Classes now use an internal private class to store member variables in order to make them ABI stable
  • Multiprocess support is available, but Log4cxx must be explicitly compiled with this option

Full release notes are below:

Bug

  • [LOGCXX-432] - AsyncAppender automatically switches to sync mode when e.g. there is no disk space available
  • [LOGCXX-451] - Application hang up during exit on Windows
  • [LOGCXX-491] - SizeBasedRollingTest cases fail when defining LOG4CXX_MULTI_PROCESS
  • [LOGCXX-563] - Fix memory leaks

New Feature

  • [LOGCXX-514] - Create a libfmt layout
  • [LOGCXX-518] - Refactor the multi process code of RollingFileAppender
  • [LOGCXX-559] - Implement LocationInfoFilter

Improvement

  • [LOGCXX-516] - Make classes ABI-stable
  • [LOGCXX-524] - Remove silent exceptions
  • [LOGCXX-527] - Mock the clock for tests
  • [LOGCXX-542] - Remove log4j serialization
  • [LOGCXX-549] - Make networking classes independent of implementation
  • [LOGCXX-557] - Keep track of all appenders even if unused
  • [LOGCXX-558] - Prevent MSVC compilation warnings "needs to have dll-interface"
  • [LOGCXX-564] - Put typedefs into log4cxx namespace
  • [LOGCXX-566] - Configurable output colors for log messages
  • [LOGCXX-567] - Investigate backtrace support
  • [LOGCXX-568] - Cleaunup files if rollover fails
  • [LOGCXX-570] - Remove ObjectOutputStream
  • [LOGCXX-571] - Better document \'runtime\' env vars and macros
  • [LOGCXX-572] - Add support to re-read configuration files to Qt support
  • [LOGCXX-573] - Provide feedback when configuring log4cxx
  • [LOGCXX-574] - Provide a list of directories/filenames to try to configure

Release 0.13.0 - 2022-04-15

This release fixes a number of issues. Notable new features include the ability to block signals from threads that the library creates, automatic creation of log directories, new color patterns, and the ability to determine the library version at compile and run-time.

Bug

  • [LOGCXX-102] - PropertyConfigurator does not process the RollingFileAppender options
  • [LOGCXX-387] - SocketAppenderSkeleton re-connects only once
  • [LOGCXX-431] - When log4cxx creates a thread, it doesn\'t block signals it\'s not using, leading to unreliable signal delivery for the calling process.
  • [LOGCXX-519] - Version11 - "INSTALL.TXT" and "vstudio.apt" miss explenation for generating the log4cxx.dll
  • [LOGCXX-525] - Compressing log files does not create directories
  • [LOGCXX-536] - CMakeLists.txt install pgkconfig and cmake modue to wrong place
  • [LOGCXX-537] - double mutex lock
  • [LOGCXX-540] - propertiestestcase.properties contains CRLF, does not well play with git
  • [LOGCXX-543] - Some tests can fail when there is a "Q" in the pathname
  • [LOGCXX-546] - Multi threaded applications run at single threaded speed

New Feature

  • [LOGCXX-529] - Support color and highlight conversion patterns

Improvement

  • [LOGCXX-337] - Suggested fix for socketappender not reconnecting multiple times
  • [LOGCXX-538] - Tests cannot be run in parallel
  • [LOGCXX-539] - Allow distribustion log4j to be used for socketservertest
  • [LOGCXX-547] - Allow for hiding of location data
  • [LOGCXX-548] - Doxygen documentation is not reproducible
  • [LOGCXX-550] - Add ability to get thread name not just ID

Wish

  • [LOGCXX-544] - Please embedd library version in a header
  • [LOGCXX-551] - CMake documented build option for Boost vs C++17 Implementation for shared_mutex

Release 0.12.1 - 2021-09-21

This is a minor bugfix release to fix issues found with 0.12.0. Notably, this version fixes a bug where a multithreaded application would crash when using a rolling file.

Bug

  • [LOGCXX-534] - Crashed in log->forcedLog function when running with multi-thread
  • [LOGCXX-528] - log4cxx fails to build on Centos 7.6 / g++ 4.8.5 / Boost 1.53

Release 0.12.0 - 2021-05-01

This is the first release to require a minimum version of C++11. This means that all objects in log4cxx are now created using std::shared_ptr as the smart pointer implementation.

Alternative build systems have been removed, and we now support CMake only for building the library.

With the introduction of smart pointers, the old behavior of implicit casting no longer works. In order to cast between classes, use the new log4cxx::cast method. This method returns an invalid shared_ptr on failure, or a shared_ptr pointing at the same object on success. This should be transparent to user code, unless you are interacting with log4cxx internals directly.

Before:

ObjectPtr instance = Loader::loadClass(className).newInstance();
AppenderPtr appender = instance;

After:

ObjectPtr instance = ObjectPtr(Loader::loadClass(className).newInstance());
AppenderPtr appender = log4cxx::cast<Appender>(instance);
// At this point(assuming the cast was good), instance and appender
// both point at the same object.

Bug

New Feature

  • [LOGCXX-515] - Add macros to utilize libfmt formatting for messages
  • [LOGCXX-523] - Add in error handling for rollover errors

Release 0.11.0 - 2020-08-09

Type Changes By
cmake and autotools generate different versioned binaries Fixes LOGCXX-512.
CachedDateFormat reuses timestamps without updating milliseconds after formatting timestamp with ms == 654 Fixes LOGCXX-506.
Checksums/Signatures don't match for log4cxx binaries Fixes LOGCXX-503.
appenderattachable.h function doc formatted "incorrectly" Fixes LOGCXX-502.
Logging in Timing-Critical Applications Fixes LOGCXX-500.
Provide a windows build environment for the project by replacing the ant build with a CMake build Fixes LOGCXX-494.
Wrong usage of milli- vs. micro- and non- vs. milliseconds in some docs. Fixes LOGCXX-493.
conditional expression is constant Fixes LOGCXX-490.
Space after log level hides messages Fixes LOGCXX-488.
Spelling error s/excute/execute Fixes LOGCXX-484.
Not able to see hebrew values when logging in log4cxx Fixes LOGCXX-483.
Build failure with GCC-6 Fixes LOGCXX-482.
TimeBasedRollingPolicy should append as configured on rollover Fixes LOGCXX-464.
LogLog::setQuietMode(true) does not suppress exception reporting Fixes LOGCXX-455.
make install fails, trying to overwrite header files Fixes LOGCXX-446.
Return by const reference in Logger::getName() Fixes LOGCXX-443.
Autoconf 2.69 needs 'ACLOCAL_AMFLAGS= -I .' Fixes LOGCXX-433.
Wildcards in Makefile.am break either VPATH or non-VPATH installs Fixes LOGCXX-428.
exceptions in CachedDateFormatTestCase after LOGCXX-420 Fixes LOGCXX-425.
liblog4cxx.pc.in should reflect dependency on apr-1, apr-1-util Fixes LOGCXX-424.
Repair autogen script warnings Fixes LOGCXX-423.
Regression of LOGCXX-420 Fixes LOGCXX-422.
Possible out_of_range exception for millisecond formats in CachedDateFormat Fixes LOGCXX-420.
atoi undefined on Mac OS 10.9 compiling stringhelper.cpp Fixes LOGCXX-417.
Configure and watch could crash on app exit with static linking Fixes LOGCXX-416.
Empty XML configuration file causes crash Fixes LOGCXX-415.
possibly wrong use of autotools docdir (due to Alex Zbarcea) Fixes LOGCXX-414.
log4cxx doesn't compile on openembedded (due to Alex Zbarcea) Fixes LOGCXX-413.
Log4cxx doesn't roll normally when working under multiple processes environment Fixes LOGCXX-412.
Crash when logging on multiple threads. Fixes LOGCXX-411.
C++11 does not allow char literals with highest bit set unless cast Fixes LOGCXX-400.
Non-ascii character output wrong. Fixes LOGCXX-399.
Infinite loop in Transcoder::encode(const LogString& src, std::wstring& dst) Fixes LOGCXX-398.
Levels are not thread safe Fixes LOGCXX-394.
Hierarchy::updateParents loops forever on illegal logger-name like '.logger1' Fixes LOGCXX-388.
Mingw build type conversion error Fixes LOGCXX-382.
Pkgconfig can't find dependencies properly if log4cxx built statically Fixes LOGCXX-381.
Load Properties File Fails When There Are multibyte Characters in the Path Fixes LOGCXX-369.
method and class name functions not properly implemented Fixes LOGCXX-368.
Build fails on Linux with g++ 4.4 Fixes LOGCXX-367.
Errors when compile log4cxx 0.10.0 under Win7 x64 with Visual Studio 2010 (due to Christian Boos and Feng Nan) Fixes LOGCXX-366.
Unit tests fail on system dates later than 2009-12-31. Fixes LOGCXX-365.
SMTPAppender generating Emails with an empty body Fixes LOGCXX-358.
apache-log4cxx-0.10.0\src\main\include\log4cxx\spi\configurator.h(57) : warning C4231: nonstandard extension used : 'extern' before template explicit instantiation Fixes LOGCXX-356.
When a client disconnects the SocketHubAppender crashes on the next log message Fixes LOGCXX-353.
Download page does not have link to KEYS file Fixes LOGCXX-351.
Transcoder::encodeCharsetName bungles encoding Fixes LOGCXX-340.
Child thread does not inherit a copy of the mapped diagnostic context of its parent Fixes LOGCXX-339.
Suggested fix for socketappender not reconnecting multiple times Fixes LOGCXX-337.
Test compilation fails: Overloading ambiguity Fixes LOGCXX-336.
DailyRollingFileAppender should roll if program doesn't run at rolling time Fixes LOGCXX-331.
TLS memory of APR is not freed in destructor of APRInitializer Fixes LOGCXX-320.
Please make sure that the LOG4CXX_* macro's can be used as ordinary statements. Fixes LOGCXX-319.
Log4cxx triggers locking inversion which can result in a deadlock. Fixes LOGCXX-317.
Build process fails in case of absence of iconv support in apr-util Fixes LOGCXX-313.
Property/xml::DOMConfigurator::configureAndWatch can continue to run after APR termination Fixes LOGCXX-305.
BasicConfigurator::configure results in writer not set warning. Fixes LOGCXX-304.
DOMConfigurator does not set ErrorHandler. Fixes LOGCXX-303.
ODBCAppender connection settings broken (or just have changed). Fixes LOGCXX-300.
odbcappender.cpp does not compile with unixODBC on linux. Fixes LOGCXX-299.
SMTPAppender does not build properly with autotools. Fixes LOGCXX-298.
Escape sequences not recognized in property files. Fixes LOGCXX-293.
Value continuation does not properly handle CRLF in property files. Fixes LOGCXX-292.
Tab characters are not recognized in property files. Fixes LOGCXX-291.
Unnecessary trailing semi-colons after LOG4CXX_INFO et al in docs, examples and tests. Fixes LOGCXX-288.
gcc 4.3 requires #include <cstring> when using memcpy and related. Fixes LOGCXX-286.
LevelRangeFilter has default value for acceptOnMatch that is different from log4j Fixes LOGCXX-285.
Unit tests fail to compile with xlc_r on AIX Fixes LOGCXX-284.
Suspicious, but harmless, reuse of LOCAL1 in SyslogAppender Fixes LOGCXX-283.
Thread::sleep not affected by Thread::interrupt. Fixes LOGCXX-282.
Sun Studio 11 reports function hides base virtual function warning Fixes LOGCXX-281.
tests and sample code unnecessarily compiled during default make target Fixes LOGCXX-280.
Threads for reconnecting sockets do not end cleanly when program exits Fixes LOGCXX-278.
Reconnection not working for sockets Fixes LOGCXX-277.
AndFilter and others defined but not implemented Fixes LOGCXX-276.
Headers cannot be included with very strict warning settings Fixes LOGCXX-275.
Prevent filenamepatterntestcase from failing in some timezones Fixes LOGCXX-273.
Apache log4cxx 0.11.0 release Fixes LOGCXX-272.
MDC::put will not overwrite existing key value pair Fixes LOGCXX-271.
Add ability to compile out logging by logging level. Fixes LOGCXX-270.
Local variables hide member variables Fixes LOGCXX-267.
Eliminate Extra ";" ignored warnings Fixes LOGCXX-266.
Eliminate anachronism warnings Fixes LOGCXX-265.
Bad link to log4cxx-dev archive Fixes LOGCXX-263.
socketappendertestcase and xmlsocketappendertestcase not run Fixes LOGCXX-262.
Console appender crashes if layout is not set Fixes LOGCXX-249.
Set SONAME in cmake like autotools based buildsystem would do. Fixes 32.
Implementation of map-based filter. Fixes 24.
Added support for building log4cxx as a statically linked library on Windows. Fixes 21.
Replaced ant build with cmake. Fixes 14.
JSONLayout Fixes 13.
Behavior of StringHelper::startsWith and endsWith synced.
Documented C (class) and M (method) log format keywords.
LocationInfo for Borland C++ Builder and successors improved.

Release 0.10.0 - 2008-04-03

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

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