Skip to content

nodetool setlogginglevel

Changes the logging level for a class or package at runtime.


Synopsis

nodetool [connection_options] setlogginglevel <class> <level>

Description

nodetool setlogginglevel dynamically changes the logging level for a specific Java class or package without restarting Cassandra. This is useful for debugging issues in production.

Non-Persistent Setting

This setting is applied at runtime only and does not persist across node restarts. After a restart, the logging levels revert to the configuration in logback.xml.


Arguments

Argument Description
class Fully qualified class name or package (empty for root logger)
level Log level: TRACE, DEBUG, INFO, WARN, ERROR, OFF

Log Levels

Level Description
TRACE Most verbose; detailed tracing information
DEBUG Debugging information
INFO Informational messages (default)
WARN Warning messages
ERROR Error messages only
OFF Disable logging

Examples

Enable Debug for Compaction

nodetool setlogginglevel org.apache.cassandra.db.compaction DEBUG

Enable Debug for Gossip

nodetool setlogginglevel org.apache.cassandra.gms DEBUG

Enable Debug for Repair

nodetool setlogginglevel org.apache.cassandra.repair DEBUG

Enable Debug for All Cassandra Classes

nodetool setlogginglevel org.apache.cassandra DEBUG

Enable Trace for Specific Class

nodetool setlogginglevel org.apache.cassandra.db.compaction.CompactionManager TRACE

Disable Logging for Noisy Class

nodetool setlogginglevel org.apache.cassandra.transport.messages OFF

Reset to Default (INFO)

nodetool setlogginglevel org.apache.cassandra.db.compaction INFO

Reset Root Logger

nodetool setlogginglevel "" INFO

Common Debug Targets

Compaction Issues

nodetool setlogginglevel org.apache.cassandra.db.compaction DEBUG

Repair Problems

nodetool setlogginglevel org.apache.cassandra.repair DEBUG
nodetool setlogginglevel org.apache.cassandra.streaming DEBUG

Gossip/Cluster Issues

nodetool setlogginglevel org.apache.cassandra.gms DEBUG
nodetool setlogginglevel org.apache.cassandra.net DEBUG

Read/Write Path

nodetool setlogginglevel org.apache.cassandra.db DEBUG
nodetool setlogginglevel org.apache.cassandra.service DEBUG

Authentication Issues

nodetool setlogginglevel org.apache.cassandra.auth DEBUG

CQL Protocol

nodetool setlogginglevel org.apache.cassandra.transport DEBUG

Hinted Handoff

nodetool setlogginglevel org.apache.cassandra.hints DEBUG

Viewing Changed Levels

nodetool getlogginglevels

Shows all loggers with non-default levels.


Workflow: Debug an Issue

# 1. Enable debug logging for relevant component
nodetool setlogginglevel org.apache.cassandra.db.compaction DEBUG

# 2. Reproduce the issue
nodetool compact my_keyspace my_table

# 3. Check logs
tail -f /var/log/cassandra/debug.log

# 4. Reset logging level
nodetool setlogginglevel org.apache.cassandra.db.compaction INFO

Log Output Location

Debug/trace logs typically go to:

/var/log/cassandra/debug.log

Check logback.xml for exact configuration.


Important Considerations

Performance Impact

  • DEBUG and TRACE levels generate significant log volume
  • May impact performance on busy clusters
  • May fill disk quickly
  • Always reset after debugging

Best Practices

  1. Be specific - Target specific classes, not broad packages
  2. Time-limited - Enable only for debugging duration
  3. Monitor disk - Debug logs grow fast
  4. Reset promptly - Return to INFO when done

Scripting Example

#!/bin/bash
# debug_compaction.sh - Enable debug, wait, then reset

DURATION=${1:-60}  # Default 60 seconds

echo "Enabling compaction debug logging for $DURATION seconds..."
nodetool setlogginglevel org.apache.cassandra.db.compaction DEBUG

sleep $DURATION

echo "Resetting to INFO..."
nodetool setlogginglevel org.apache.cassandra.db.compaction INFO

echo "Done. Check /var/log/cassandra/debug.log"

Command Relationship
getlogginglevels View current logging levels
info Node information
compactionstats Alternative to debug logs