              Apache Commons Logging
                  Version 1.1.2
                  RELEASE NOTES

The Commons Logging team is pleased to announce the release of Apache Commons Logging 1.1.2

Commons Logging is a thin adapter allowing configurable bridging to other,
well known logging systems.

This is a maintenance release containing bug fixes.

Changes in this version include:


Fixed Bugs:
o LOGGING-124:  The jar manifest now contains proper OSGi-related metadata information. Thanks to Christian Schneider.
o LOGGING-144:  LogFactory and LogFactoryImpl will not swallow certain errors anymore (ThreadDeath
                and VirtualMachineError). Thanks to Sebastian Bazley.
o LOGGING-132:  Jdk14Logger now correctly uses the specified logger name. Thanks to Nathan Niesen.
o LOGGING-146:  Properly synchronize access to protected static field LogFactory.nullClassLoaderFactory.
                Thanks to Sebastian Bazley.
o LOGGING-119:  Prevent potential deadlock scenario in WeakHashtable. Thanks to Nitzan Niv, Philippe Mouawad.
o LOGGING-130:  Potential missing privileged block for class loader. Thanks to Matthew P. Del Buono.
o LOGGING-145:  LogFactoryImpl.setAttribute - possible NPE.
o LOGGING-142:  Log4JLogger uses deprecated static members of Priority such as INFO. Thanks to Jingguo Yao.
o LOGGING-128:  Static analysis suggests a number of potential improvements. Thanks to Peter Lawrey.
o LOGGING-147:  SimpleLog.log - unsafe update of shortLogName.
o LOGGING-148:  LogFactory.diagnosticPrefix and diagnosticsStream could be final.

Changes:
o LOGGING-135:  Improved thread-safety for several log adapters, including AvalonLogger, SimpleLog,
                Log4JLogger, LogKitLogger. Thanks to Sebastian Bazley.
o LOGGING-138:  In case of a discovery failure now also the stacktrace of the cause will be
                added to the diagnostic message. Thanks to Luke Lu.
o LOGGING-133:  Change scope of Jdk14Logger.log(Level, String, Throwable) to protected, allowing
                subclasses to modify the logging output. Thanks to Shevek.


Historical list of changes: http://commons.apache.org/logging/changes-report.html

For complete information on Commons Logging, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Logging website:

http://commons.apache.org/logging/