apache/cassandra · warning
The log level was not changed, because you are using an…
Error message
The log level was not changed, because you are using an unsupported slf4j logging implementation for which this functionality was not implemented.
What it means
NoOpFallbackLoggingSupport is used when slf4j is not backed by logback; its setLoggingLevel cannot change any log level, so it merely logs this warning and returns. JMX or nodetool calls to set log levels silently have no effect in this unsupported configuration.
Solutions
- Fix the logging binding so logback-classic backs slf4j (see the 'unsupported deployment' startup warning), enabling real level changes.
- Verify the change took effect via nodetool getlogginglevels; if nothing changed, you are on the NoOp fallback.
- As a workaround, edit conf/logback.xml and restart the node (or use a scanning config for periodic reload).
- Confirm which slf4j provider is active (check classpath/logs) before relying on dynamic level changes.
Example fix
// before: expecting effect: nodetool setlogginglevel org.apache.cassandra DEBUG (no-op, only warns) // after: ensure logback binding, then: nodetool setlogginglevel org.apache.cassandra DEBUG && nodetool getlogginglevels (verify)
Defensive patterns
Strategy: fallback
Validate before calling
// check whether dynamic logging is available before calling: if (!(LoggerFactory.getILoggerFactory() instanceof ch.qos.logback.classic.LoggerContext)) { editLogbackXmlAndReloadInstead(); } Try / catch
try { ssProxy.setLoggingLevel("org.apache.cassandra", "DEBUG"); } finally { if (ssProxy.getLoggingLevels().isEmpty()) applyLevelViaLogbackXml(); } Prevention
- Confirm logback binding before relying on dynamic log-level changes.
- Always verify setlogginglevel took effect via getlogginglevels.
- Use logback.xml scanning (scan="true") as the restart-free alternative.
- Educate ops runbooks: level changes are no-ops on non-logback deployments.
When it happens
Trigger: Calling nodetool setlogginglevel (or the setLoggingLevel JMX operation, StorageService.setLoggingLevel) while Cassandra runs with a non-logback slf4j binding, causing NoOpFallbackLoggingSupport.setLoggingLevel to execute.
Common situations: Operators adjusting log verbosity during an incident on a misbuilt deployment without logback; automation scripts calling setlogginglevel that appear to succeed but change nothing.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- An empty map of logger names and their logging levels was…
- You are using Cassandra with an unsupported deployment. The…
- Already logging to
- Can't enable audit log archiving via nodetool unless…
- Can't enable full query log archiving via nodetool unless…
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/7ae0784badd485f2.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/utils/logging/NoOpFallbackLoggingSupport.java:39
import java.util.Collections;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* A fallback implementation with empty implementations which ensures other slf4j bindings (logging implementations)
* than the default supported framework can be used. This loses functionality, but is perfectly fine for most
* integration test requirements of applications using an embedded cassandra server.
*/
public class NoOpFallbackLoggingSupport implements LoggingSupport
{
private static final Logger logger = LoggerFactory.getLogger(NoOpFallbackLoggingSupport.class);
@Override
public void setLoggingLevel(String classQualifier, String rawLevel) throws Exception
{
logger.warn("The log level was not changed, because you are using an unsupported slf4j logging implementation for which this functionality was not implemented.");
}
@Override
public Map<String, String> getLoggingLevels()
{
logger.warn("An empty map of logger names and their logging levels was returned, because you are using an unsupported slf4j logging implementation for which this functionality was not implemented.");
return Collections.emptyMap();
}
}
View on GitHub (pinned to 88fd0f6a0e)