Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Apache Kafka Broker Log4j2 Configuration

From Leeroopedia


Knowledge Sources
Domains Operations, Logging, Configuration
Last Updated 2026-02-09 12:00 GMT

Overview

Configuration reference for the Kafka broker's primary Log4j2 logging configuration file (config/log4j2.yaml), defining appender hierarchies and logger routing for broker subsystems.

Description

The config/log4j2.yaml file is the central logging configuration for Kafka broker deployments. It defines two properties (kafka.logs.dir defaulting to . and logPattern set to [%d] %p %m (%c)%n), six RollingFile appenders with hourly time-based rotation, a Console appender (STDOUT), and a logger hierarchy that routes specific Kafka subsystems to dedicated log files using additivity: false to prevent duplicate logging.

Usage

This configuration is loaded by the Kafka broker at startup via the KAFKA_LOG4J_OPTS environment variable (set by kafka-server-start.sh). Operators customize this file to adjust log levels, add appenders, or change rotation policies for production Kafka clusters.

Code Reference

Source Location

Signature

Configuration:
  Properties:
    Property:
      - name: "kafka.logs.dir"
        value: "."
      - name: "logPattern"
        value: "[%d] %p %m (%c)%n"

  Appenders:
    Console:
      name: STDOUT
    RollingFile:
      - name: KafkaAppender          # -> server.log
      - name: StateChangeAppender     # -> state-change.log
      - name: RequestAppender         # -> kafka-request.log
      - name: CleanerAppender         # -> log-cleaner.log
      - name: ControllerAppender      # -> controller.log
      - name: AuthorizerAppender      # -> kafka-authorizer.log

  Loggers:
    Root:
      level: INFO
      AppenderRef: [STDOUT, KafkaAppender]
    Logger:
      - name: kafka.request.logger     -> RequestAppender (WARN)
      - name: kafka.network.RequestChannel$ -> RequestAppender (WARN)
      - name: org.apache.kafka.controller  -> ControllerAppender (INFO)
      - name: ...LogCleaner            -> CleanerAppender (INFO)
      - name: state.change.logger      -> StateChangeAppender (INFO)
      - name: kafka.authorizer.logger  -> AuthorizerAppender (INFO)

Import

# Applied automatically by kafka-server-start.sh via:
export KAFKA_LOG4J_OPTS="-Dlog4j2.configurationFile=$base_dir/../config/log4j2.yaml"

# Or override manually:
export KAFKA_LOG4J_OPTS="-Dlog4j2.configurationFile=/path/to/custom/log4j2.yaml"
bin/kafka-server-start.sh config/server.properties

I/O Contract

Inputs

Name Type Required Description
kafka.logs.dir System property No Directory for log file output; defaults to current directory (.)
KAFKA_LOG4J_OPTS Env var No JVM system property pointing to this configuration file

Outputs

Name Type Description
server.log Rolling file General broker log output (Root logger + KafkaAppender)
state-change.log Rolling file Partition state transition events (StateChangeAppender)
kafka-request.log Rolling file Request handling logs at WARN+ level (RequestAppender)
log-cleaner.log Rolling file Log compaction activity (CleanerAppender)
controller.log Rolling file Controller operations (ControllerAppender)
kafka-authorizer.log Rolling file Authorization events (AuthorizerAppender)
STDOUT Console Console output for the Root logger

Usage Examples

Default Broker Startup

# The default config/log4j2.yaml is loaded automatically by kafka-server-start.sh
bin/kafka-server-start.sh config/server.properties
# Logs are written to the current directory (.) by default

Custom Log Directory

# Override the log directory via system property
export KAFKA_LOG4J_OPTS="-Dlog4j2.configurationFile=config/log4j2.yaml"
export LOG_DIR="/var/log/kafka"
bin/kafka-server-start.sh config/server.properties

Enable TRACE Request Logging

# Uncomment these sections in log4j2.yaml for detailed request tracing:
Logger:
  - name: kafka.network.Processor
    level: TRACE
    additivity: false
    AppenderRef:
      ref: RequestAppender
  - name: kafka.server.KafkaApis
    level: TRACE
    additivity: false
    AppenderRef:
      ref: RequestAppender

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment