Skip to content
Maintained by AxonOps — production-grade documentation from engineers who operate distributed databases at scale

Cassandra Logging Configuration

Configure and analyze Cassandra logs for monitoring and troubleshooting.

Log Files

Log File Purpose Location
system.log Main application log /var/log/cassandra/
debug.log Detailed debug information /var/log/cassandra/
gc.log Garbage collection /var/log/cassandra/
audit.log Security audit (if enabled) /var/log/cassandra/

Logback Configuration

Location

/etc/cassandra/logback.xml

Basic Configuration

<configuration scan="true" scanPeriod="60 seconds">
  <jmxConfigurator />

  <!-- Console appender -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- System log -->
  <appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${cassandra.logdir}/system.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${cassandra.logdir}/system.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
      <maxFileSize>50MB</maxFileSize>
      <maxHistory>7</maxHistory>
      <totalSizeCap>500MB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- Debug log -->
  <appender name="DEBUGLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${cassandra.logdir}/debug.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${cassandra.logdir}/debug.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
      <maxFileSize>50MB</maxFileSize>
      <maxHistory>7</maxHistory>
      <totalSizeCap>500MB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- Root logger -->
  <root level="INFO">
    <appender-ref ref="SYSTEMLOG" />
    <appender-ref ref="STDOUT" />
  </root>

  <!-- Debug logger -->
  <logger name="org.apache.cassandra" level="DEBUG" additivity="false">
    <appender-ref ref="DEBUGLOG" />
  </logger>
</configuration>

Dynamic Log Level Changes

# Get current levels
nodetool getlogginglevels

# Set log level (temporary)
nodetool setlogginglevel org.apache.cassandra DEBUG

# Set specific class
nodetool setlogginglevel org.apache.cassandra.db.compaction DEBUG

# Reset to INFO
nodetool setlogginglevel org.apache.cassandra INFO

Important Log Messages

Startup Messages

INFO  - Cassandra version: 4.1.3
INFO  - Starting up...
INFO  - Hostname: node1.example.com:7000
INFO  - JVM vendor/version: OpenJDK / 11.0.x
INFO  - Heap size: 8192/8192 MB
INFO  - Node /10.0.0.1 is now part of the cluster

Warning Signs

# Tombstone warnings
WARN  - Read 5000 tombstones for query SELECT ...

# Large partition warnings
WARN  - Compacting large partition keyspace/table:key (150MB)

# GC warnings
WARN  - GC pause of 1500ms

# Dropped messages
WARN  - MUTATION messages were dropped in last 5000ms

Log Analysis

Common Searches

# Find errors
grep -i "error\|exception" /var/log/cassandra/system.log

# Find warnings
grep -i "warn" /var/log/cassandra/system.log | tail -100

# Compaction activity
grep -i "compaction" /var/log/cassandra/system.log

# GC pauses
grep -i "gc pause" /var/log/cassandra/gc.log

# Slow queries
grep -i "slow" /var/log/cassandra/system.log

Next Steps