# log4j version 1.2.14

Log4j is available for download from a number of mirrors. Please use these mirrors as they improve download time and save bandwidth.

Changes in log4j 1.2.14:

- AsyncAppender was rewritten to eliminate reported deadlocks (bugs 26224, 28006, 37904, 38137), and to add an option to not block if the event queue becomes full (bug 38982).
- SyslogAppender can now accept a port specification (bug 39687) in its syslogHost attribute.
- SMPTAppender can now accept cc and bcc addresses (bug 19125) and perform password authentication (bug 24969).
- The following bugs were fixed:
  - 40159: NullPointerException in org.apache.log4j.NDC.get.
  - 36787: org.apache.log4j.lf5.util.DateFormatManager.setTimeZone assignment error.
  - 38559: Monthly logs not generated at midnight with DailyRollingFileAppender.
  - 40145: PatternLayout specifier %r is not consistent with documentation.
  - 37119: Space after log level causes default level to be used.
  - 39135: Bad patterns in ISO8601DateFormat and DateTimeDateFormat.
  - 35743: SyslogAppender throws NullPointerException upon misconfiguration.
  - 15501: FallbackErrorHandler throws NullPointerException if no loggers are set.
  - 38564: Bad documentation for WriterAppender.encoding.
  - 37866: NTEventLogAppender not build, tested and placed in distribution.
  - 38662: SMTPAppender does not output newlines between stack trace lines.
  - 30294: SMTPAppender will not run within sandbox.
  - 16922: MDC with SMTPAppender doesn't work.
  - 31507: Misspelling in HierarchyDynamicMBean.
  - 35123: Additivity not exported by PropertyPrinter.
  - 31003: RollingFileAppender, if removed, can cause NullPointerExceptions.
  - 23021: AsyncAppender blocks on thread death.
  - 40412: NOTICE file added to distribution and jar.
  - 40378: Chainsaw of log4j 1.2 does not show TRACE level.
  - 40501: TRACE level missing in short introduction to log4j.
  - 37960: Update site generation to velocity 1.4 and remove dependency on logging/site project.

The next major release of log4j will be version 1.3. It will contain many new features and changes, and if you have written custom code, it may need to be modified to work with it. Please see the document entitled preparing for log4j 1.3 for a more detailed discussion.

### Earlier Releases

We also maintain earlier versions of log4j for download, intended for the curious paleontologist -- there seems to be quite a few of them!

# Third-party extensions (listed in alphabetical order)

DatedFileAppender
  `DatedFileAppender` works in the same manner as the Tomcat FileLogger. Contrary to `DailyRollingFileAppender` shipping with log4j, log file names generated by `DatedFileAppender` always contain today's date. While this distinction seems minor, it means you can reliably copy, compress, remove or manipulate a day's log file shortly after midnight. With the DailyRollingFileAppender, a day's log file is not renamed until the first message is logged some time after midnight.
JDBCAppender
  A powerful `JDBCAppender` by Danko Mannhaupt who continues the work of Thomas Fenner. You might find this JDBCAppender more suitable then the one that ships with log4j 1.2.
Just4log
  Just4Log is a library to enhance dynamically the performance of various logging systems inside a java application. Dynamically because the sourcecode in java is not modified but rather the optimization occurs on the compiled ByteCode files.
log4Ant
  log4Ant includes a complete bridge to the Log4J logging systemfor a robust build monitoring system. These Ant components let you capture, map, and send Ant log messages and stdio output through your Log4J installation. Contact contact@jware.info
log4j400
  Log4J400 includes MessageQueue and DataQueue Appenders for the AS/400 (aka IBM iSeries).
log4j2db
  This Project provides a set of EJBs to store Log4J events (received via JMS appender) in a database. The main aim is to provide a toolset for a centralized, data-center suitable logging.
log4jME
  Log4jME, or log4j MiniEdition, is based on the same code as log4j. However, as the name indicates the mini-edition is much smaller. It offers the same client interface such that code compiled for log4jME is compatible with log4j standard edition. You can choose to upgrade to log4j standard edition at any time by replacing log4jME.jar with log4j.jar in your classpath. At this time, log4jME is only available through ASF Subversion repository in the Logging Services Sandbox.
log4Unit
  Log4Unit is a JUnit extension combining JUnit with Log4J. The intention is to create test protocols for JUnit.

  JUnit is asymmetrical in the sense that it focusses on the documentation of test failures and errors. Successful execution of a test case is not further documented. In order to obtain a test protocol that documents the initial settings, the test case execution and its results, a logging component is required. Log4J as the current de facto standard is selected for this extension.

Log4Web (commercial)
  Log4Web is a J2EE web application, designed to web-enable system log files that have been generated by log4j.
Log Tag
  A custom log tag library from the Jakarta Taglibs project.
LogWeb
  LogWeb is a web interface for configuring log4j at runtime within a servlet container. Every log4j feature of is configurable through this interface.
SNMPTrapAppender
  An appender to send formatted logging event strings to a specified managment host (typically, a MLM of some sort, but could also be an SNMP management console) in the form of an SNMP trap.
XpoLog
  Log view and analysis application which enables web browsing and analysis over logs.

# Ports to other languages (listed in alphabetical order within each section)

### Fellow Apache Logging Services Projects

log4cxx
  Log4cxx is a port to C++ of the log4j project.
log4net
  The .NET implementation of the popular log4j Java API providing flexible and arbitrarily granular control over log management and configuration.
log4php
  Log4Php is a PHP port of log4j framework. It supports xml configuration, logging to files, stdout/err, syslog, socket, configurable output layouts and logging levels.

### Other Ports

log4c
  ANSI C functions and macros for flexible logging to files and other destinations. It is modeled after log4j. It follows the log4j API within the limits of reason. Intended for use in time-space critical environments.
log4cpp
  A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations modeled after log4j.
log4cplus
  Log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modeled after the Java log4j API.
log4E
  The Goanna project (Eiffel Web Services) now includes log4E, a complete port of log4j.
Log::Log4perl
  Log::Log4perl is a Perl port of log4j by Kevin Goess and Mike Schilli. The authors made sure that their port was as close as possible to the original implementation. Even the configuration files are similar! The project is still being enhanced, however the current release is stable and has been released to CPAN.
log4LS
  Log4LS is a LotusScript library package and is used to get logging statements to a Domino database, sent by mail or written to a file. It is modeled after Jakarta log4j.
log4py
  Log4Py is a python logging module similar to log4j. It supports logging to files or to stdout/stderr, variable log-levels, configurable output formats and configuration via configuration files.
log4p
  Another Python translation of log4j. This project no longer seems to be maintained.
log4plsql
  Log4plsql is a Oracle PL/SQL logging module similar to log4j. It supports logging out-off transaction. It is useful for logging, benchmarking and monitoring PL/SQL applications.
qmmslog
  Qmmslog is a port of log4j to the Qt/C++ platform.
log4r
  A Powerful Logger for Ruby.

  Log4r features an extremely flexible logging library for Ruby. Killer features include a heiarchial logging system of any number of levels, logger inheritance, multiple output destinations, tracing, custom formatting and more. Log4r was inspired by log4j. Log4r provides the defining features of log4j and some of its own features that just might make log4j users envious.

If you would like your software to be listed here, then send a note to the log4j-user@logging.apache.org list.

Copyright © 1999-2006, Apache Software Foundation.
Licensed under the Apache License, Version 2.0.