apache/cassandra · warning
You are using Cassandra with an unsupported deployment. The…
Error message
You are using Cassandra with an unsupported deployment. The intended logging implementation library logback is not used by slf4j. Detected slf4j logger factory: {}. You will not be able to dynamically manage log levels via JMX and may have performance or other issues. What it means
At startup, LoggingSupportFactory inspects slf4j's LoggerFactory; if it is not Logback, Cassandra falls back to NoOpFallbackLoggingSupport and warns that the deployment is unsupported. Dynamic log-level management via JMX will not work and performance may suffer, because Cassandra expects logback as its logging backend.
Solutions
- Check the detected factory class in the warning to see which binding won.
- Remove conflicting slf4j bindings (e.g. slf4j-log4j12, slf4j-simple) from the classpath so only logback-classic remains.
- Restore the stock Cassandra logback jar/config if a custom build altered logging dependencies.
- Restart Cassandra and confirm the warning is gone; dynamic log-level JMX ops will then work.
- If you cannot change the binding, accept the NoOp fallback - dynamic setLoggingLevel calls will silently do nothing.
Example fix
// before: conflicting binding present: ls lib | grep slf4j shows slf4j-simple and logback-classic // after: remove the competing binding: rm lib/slf4j-simple-*.jar && restart cassandra
Defensive patterns
Strategy: validation
Validate before calling
// verify the slf4j binding before starting Cassandra: Class<? extends ILoggerFactory> f = LoggerFactory.getILoggerFactory().getClass(); if (!f.getName().contains("Logback")) throw new IllegalStateException("slf4j not bound to logback: " + f.getName()); Prevention
- Keep only logback-classic as the slf4j binding on the classpath.
- Check logs at startup for this warning after any dependency change.
- Do not bundle tools/agents that ship their own slf4j implementation into lib/.
- Verify with nodetool getlogginglevels that dynamic logging works after upgrades.
When it happens
Trigger: slf4j binds to a provider other than logback - e.g. a conflicting slf4j binding on the classpath, running Cassandra classes with a classpath that pulls in slf4j-simple/log4j, or a custom build packaging the wrong jars; getLoggingSupport detects the unexpected loggerFactoryClass.
Common situations: Adding tools/agents (or test harnesses) that bundle their own slf4j implementation into the classpath; custom distributions replacing logback; accidentally shipping both logback-classic and another binding so SLF4J picks the wrong provider.
Understand the failure class
Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.
Related errors
- The log level was not changed, because you are using an…
- There are multiple appenders of class
- Already logging to
- An empty map of logger names and their logging levels was…
- Error setting log for on level . Please check logback…
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/bb425432ff4673b8.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/utils/logging/LoggingSupportFactory.java:54
private LoggingSupportFactory() {}
/**
* @return An appropriate {@link LoggingSupport} implementation according to the used slf4j binding.
*/
public static LoggingSupport getLoggingSupport()
{
if (loggingSupport == null)
{
// unfortunately, this is the best way to determine if logback is being used for logger
String loggerFactoryClass = LoggerFactory.getILoggerFactory().getClass().getName();
if (loggerFactoryClass.contains("logback"))
{
loggingSupport = FBUtilities.instanceOrConstruct("org.apache.cassandra.utils.logging.LogbackLoggingSupport", "LogbackLoggingSupport");
}
else
{
loggingSupport = new NoOpFallbackLoggingSupport();
logger.warn("You are using Cassandra with an unsupported deployment. The intended logging implementation library logback is not used by slf4j. Detected slf4j logger factory: {}. "
+ "You will not be able to dynamically manage log levels via JMX and may have performance or other issues.", loggerFactoryClass);
}
}
return loggingSupport;
}
}
View on GitHub (pinned to 88fd0f6a0e)