Skip to content

Configure logging

Client-side logging helps you debug connection issues, monitor cluster health, and troubleshoot performance problems.

Why client logging matters

The Developer SDK runs background threads that:

  • Maintain cluster topology (node discovery)
  • Monitor connection health
  • Handle failover events

These events are logged and crucial for diagnosing production issues.

Enable logging

The Java client uses SLF4J for logging. Add a logging implementation to your project:

<!-- Logback (recommended) -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.14</version>
</dependency>

Configure logback.xml:

<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- Aerospike Java SDK (preview) -->
<logger name="com.aerospike.client.sdk" level="INFO"/>
<root level="WARN">
<appender-ref ref="STDOUT"/>
</root>
</configuration>

Log levels

LevelWhen to UseWhat’s Logged
ERRORProductionConnection failures, unrecoverable errors
WARNProductionRetries, temporary failures, deprecation notices
INFOStagingCluster topology changes, connection events
DEBUGDevelopmentAll operations, request/response details
TRACETroubleshootingWire protocol, internal state
<!-- Production -->
<logger name="com.aerospike.client.sdk" level="WARN"/>
<!-- Development -->
<logger name="com.aerospike.client.sdk" level="DEBUG"/>
<!-- Troubleshooting connection issues -->
<logger name="com.aerospike.client.sdk" level="DEBUG"/>

Disable logging

To completely disable client logging:

<logger name="com.aerospike.client.sdk" level="OFF"/>

Or programmatically:

import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
Logger aerospikeLogger = (Logger) LoggerFactory.getLogger("com.aerospike.client.sdk");
aerospikeLogger.setLevel(Level.OFF);

Custom logger implementation

For advanced scenarios, you can provide a custom logger:

// The client uses SLF4J, so any SLF4J-compatible logger works
// No custom implementation needed - just configure your logging framework

Log message reference

Cluster events

Message PatternMeaning
Node added: <address>New node discovered in cluster
Node removed: <address>Node left cluster or unreachable
Cluster tenderBackground topology refresh
Connection poolConnection lifecycle events

Error messages

Message PatternLikely CauseAction
Connection refusedServer not runningCheck server status
TimeoutNetwork or server overloadCheck latency, adjust timeouts
Cluster not foundDNS or firewall issueVerify network connectivity

Next steps

Enable Metrics

Monitor client performance with metrics.

Metrics →

Feedback

Was this page helpful?

What type of feedback are you giving?

What would you like us to know?

+Capture screenshot

Can we reach out to you?