Log4j Runtime Dependencies
Some Log4J features depend on external libraries. This page lists the required and optional dependencies.
As of version 2.10.0 the Log4j API is a Java module (with a module-info.java). Many of the other jars are automatic modules. The characteristics of the modules are:
Artifact Name | Module Name | Module Characteristics | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
log4j-api | org.apache.logging.log4j |
|
||||||||||||||||
log4j-appserver | org.apache.logging.log4j.appserver | Automatic Module | ||||||||||||||||
log4j-cassandra | org.apache.logging.log4j.cassandra | Automatic Module | ||||||||||||||||
log4j-core | org.apache.logging.log4j.core | Automatic Module | ||||||||||||||||
log4j-couchdb | org.apache.logging.log4j.couchdb | Automatic Module | ||||||||||||||||
log4j-docker | org.apache.logging.log4j.docker | Automatic Module | ||||||||||||||||
log4j-1.2-api | org.apache.log4j | Automatic Module | ||||||||||||||||
log4j-flume-ng | org.apache.logging.log4j.flume | Automatic Module | ||||||||||||||||
log4j-iostreams | org.apache.logging.log4j.iostreams | Automatic Module | ||||||||||||||||
log4j-jcl | org.apache.logging.log4j.jcl | Automatic Module | ||||||||||||||||
log4j-jmx-gui | org.apache.logging.log4j.jmx.gui | Automatic Module | ||||||||||||||||
log4j-jul | org.apache.logging.log4j.jul | Automatic Module | ||||||||||||||||
log4j-mongodb | org.apache.logging.log4j.mongodb | Automatic Module | ||||||||||||||||
log4j-osgi | org.apache.logging.log4j.osgi | Automatic Module. Unclear how OSGi will support Java modules. | ||||||||||||||||
log4j-slf4j-impl | org.apache.logging.log4j.slf4j.impl | Automatic Module. May require renaming should SLF4J ever require all implementations to have the same module name. | ||||||||||||||||
log4j-taglib | org.apache.logging.log4j.taglib | Automatic Module | ||||||||||||||||
log4j-to-slf4j | org.apache.logging.log4j.slf4j | Automatic Module | ||||||||||||||||
log4j-web | org.apache.logging.log4j.web | Automatic Module |
As of version 2.9.1 Log4j supports Java 9 but will still work in Java 7 or 8. In this version log4j-api is packaged as a multi-release jar and supports the use of the StackWalker and Process APIs.
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.
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 MongoDB library |
NoSQL Appender with Apache CouchDB provider | LightCouch CouchDB client library and Log4j CouchDB library |
Cassandra Appender | Datastax Cassandra driver and Log4j Cassandra 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-docker
Log4j Docker Support requires Jackson annotations, core, and databind. See the Dependency Tree for the exact list of JAR files needed.
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. Including Log4j Core provides optional, extra functionality.
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-spring-cloud-config-client
Log4j Spring Cloud Config Client requires Spring Cloud Config. Spring Cloud Bus is required if notification of logging configuration changes is desired. Spring Boot is required but applications do not have to be packaged as a Spring Boot application. 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-couchdb
The Log4J CouchDB module depends on the LightCouch CouchDB client library.
log4j-mongodb
The Log4J MongoDB module depends on the MongoDB Java Client driver.
log4j-cassandra
The Log4J Cassandra module depends on 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.