Apache logging services logo Apache log4j logo

Log4j Runtime Dependencies

Some Log4J features depend on external libraries. This page lists the required and optional dependencies.

As of version 2.4, Log4J requires Java 7.

Log4j version 2.3 and older require Java 6.

log4j-api

The Log4J API module has no external dependencies.

log4j-core

The Log4J Implementation has several optional dependencies. See the Dependency Tree for the exact list of JAR files needed for these features.

Optional Dependencies per Feature in Log4J Implementation
Feature Requirements
XML configuration -
Properties configuration -
JSON configuration Jackson core and databind
YAML configuration Jackson databind and YAML data format
CSV Layout Apache Commons CSV
JSON Layout Jackson core and databind
XML Layout Jackson core, databind and dataformat XML
And com.fasterxml.woodstox:woodstox-core:5.0.2
YAML Layout Jackson core, databind and YAML data format
Async Loggers LMAX Disruptor
Kafka Appender Kafka client library. Note that you need to use a version of the Kafka client library matching the Kafka server used.
SMTP Appender an implementation of javax.mail
JMS Appender a JMS broker like Apache ActiveMQ
Windows console color support Jansi
JDBC Appender a JDBC driver for the database you choose to write events to
JPA Appender the Java Persistence API classes, a JPA provider implementation, and a decorated entity that the user implements. It also requires an appropriate JDBC driver
NoSQL Appender with MongoDB provider MongoDB Java Client driver and Log4j NoSQL library
NoSQL Appender with Apache CouchDB provider LightCouch CouchDB client library and Log4j NoSQL library
Cassandra Appender Datastax Cassandra driver and Log4j NoSQL library
Bzip2, Deflate, Pack200, and XZ compression on rollover Apache Commons Compress. In addition, XZ requires XZ for Java.
ZeroMQ Appender The ZeroMQ appender uses the JeroMQ library which is licensed under the terms of the Mozilla Public License Version 2.0 (MPLv2). For details see the file LICENSE included with the JeroMQ distribution.

log4j-jcl

The Commons Logging Bridge requires Commons Logging. See the Dependency Tree for the exact list of JAR files needed.

log4j-1.2-api

The Log4j 1.2 Bridge has no external dependencies. This only requires the Log4j API and Log4j Core.

log4j-slf4j-impl

The Log4j 2 SLF4J Binding depends on the SLF4J API. See the Dependency Tree for the exact list of JAR files needed.

Do not use this with the log4j-to-slf4j module.

log4j-jul

The Log4j 2 Java Util Logging Adapter has no external dependencies. It optionally depends on the Log4j Core library. The only required module is the Log4j API.

log4j-to-slf4j

The Log4j 2 to SLF4J Adapter requires the SLF4J API and an SLF4J implementation. See the Dependency Tree for the exact list of JAR files needed.

Do not use this with the log4j-slf4j-impl module.

log4j-flume-ng

The Flume Appender requires Apache Flume and Apache Avro. The persistent agent uses Berkeley DB. See the Dependency Tree for the exact list of JAR files needed.

log4j-taglib

The Log4j Log Tag Library requires the Jakarta Commons Log Taglib and the Servlet API. See the Dependency Tree for the exact list of JAR files needed.

log4j-jmx-gui

The Log4j JMX GUI requires the JConsole jar when run as a JConsole plugin. Otherwise it has no external dependencies. See the Dependency Tree for the exact list of JAR files needed.

log4j-web

The Log4j Web module requires the Servlet API. See the Dependency Tree for the exact list of JAR files needed. Note that this works with the Servlet 2.5 API as well as the Servlet 3.x API.

log4j-nosql

The Log4J NoSQL Appenders module has several optional dependencies. See the Dependency Tree for the exact list of JAR files needed for these features.

Optional Dependencies per Feature in Log4J NoSQL Appenders
NoSQL Appender with MongoDB provider the MongoDB Java Client driver
NoSQL Appender with Apache CouchDB provider the LightCouch CouchDB client library
Cassandra Appender the Datastax Cassandra driver

log4j-iostreams

The Log4j IO Streams module has no external dependencies. This only requires the Log4j API.

log4j-api-scala

The Log4j Scala API requires Scala runtime library and reflection in addition to the Log4j API.