{question}
How do I enable trace logging for the SingleStore JDBC Connector?
{question}
{answer}
SingleStore JDBC Connector uses the SLF4J https://www.slf4j.org/. It allows the end user to plug in the desired logging framework/configuration at deployment time (e.g. java.util.logging, logback, log4j). The current slf4j version is 2.0.4. The logger name is “com.singlestore.jdbc".
Warning! Huge trace logs could be truncated by the ‘maxQuerySizeToLog' parameter from the connection string. The default size is 1024.
JDBC supports the following Java logging levels:
Log Levels | Description |
INFO | Logs connection errors |
DEBUG/FINE |
Logs SQL statements |
TRACE/FINEST | Logs network exchanges |
Option 1: Logback
- Example of configuration for logback logging framework: The following is an example of a TRACE configuration with 2 outputs: Console (STDOUT) and File (FILE) to filepath: log-${byDay}.txt.
- For more info: Logback configuration
1. Add logback dependency:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.7</version>
</dependency>
2. Add configuration file 'logback.xml' to the classpath:
<configuration>
<timestamp key="byDay" datePattern="yyyyMMdd'T'HHmmss"/>
<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>
<logger name="com.singlestore.jdbc" level="TRACE" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</logger>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>log-${byDay}.txt</file>
<append>true</append>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
Option 2: Log4j
Example of configuration for log4j logging framework:
1. Add log4j dependency (slf4j-log4j12-SLF4J_VERSION.jar):
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>2.0.4</version>
</dependency>
2. Add configuration file log4j.properties:
log4j.rootLogger=INFO, MAIN
log4j.appender.MAIN=org.apache.log4j.ConsoleAppender
log4j.appender.MAIN.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIN.layout.ConversionPattern=%r [%t] %-5p %c %x - %m%n
log4j.logger.com.singlestore.jdbc=TRACE
Example of configuration for log4j logging framework:
1. Add log4j dependency( slf4j-log4j12-SLF4J_VERSION.jar) :
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>2.0.4</version>
</dependency>
2. Add configuration file
log4j.properties(or XML as alternative):
log4j.rootLogger=INFO, MAIN
log4j.appender.MAIN=org.apache.log4j.ConsoleAppender
log4j.appender.MAIN.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIN.layout.ConversionPattern=%r [%t] %-5p %c %x - %m%n
log4j.logger.com.singlestore.jdbc=TRACE
Example of configuration for log4j2 logging framework:
1. Add log4j2 dependency (log4j-slf4j-impl-SLF4J_VERSION.jar):
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.20.0</version>
</dependency>
2. Add configuration file log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="SingleStore">
<Appenders>
<File name="FILE" fileName="logs/single_store.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="FILE"/>
<AppenderRef ref="STDOUT"/>
</Root>
<Logger name="com.singlestore.jdbc" level="TRACE">
</Logger>
</Loggers>
</Configuration>
{answer}