Logback is the default platform logger, so is easiest to configure. If you need to use Log4J for StreamBase 7.x, please see the "Using StreamBase Logging" page in the "Administration Guide" section of the TIBCO StreamBaseĀ® Help documentation. TIBCO Streaming version 10 or later uses Logback exclusively.
This logback.xml configuration separates the JMS and JDBC messages into their own files and leaves the remainder to go to the console:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds">
<appender name="JMS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logJMS-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss} [LogBack %level] %logger{0} - %msg%n</pattern>
</encoder>
</appender>
<appender name="JDBC" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logJDBC-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss} [LogBack %level] %logger{0} - %msg%n</pattern>
</encoder>
</appender>
<appender name="RootConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<encoder>
<pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} [%-5level] %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="Consumer" additivity="false">
<level value="debug"/>
<appender-ref ref="JMS"/>
</logger>
<logger name="Producer" additivity="false">
<level value="debug"/>
<appender-ref ref="JMS"/>
</logger>
<!-- JDBC -->
<logger name="com.streambase.sb.expr.DataSourceInfoImpl" additivity="false">
<level value="debug"/>
<appender-ref ref="JDBC"/>
</logger>
<logger name="com.streambase.sb.eventflow.JDBCTypechecker" additivity="false">
<level value="debug"/>
<appender-ref ref="JDBC"/>
</logger>
<logger name="com.streambase.sb.jdbc.activevoice.Evaluator" additivity="false">
<level value="debug"/>
<appender-ref ref="JDBC"/>
</logger>
<logger name="com.streambase.sb.typecheck.JDBCTypecheckInfo" additivity="false">
<level value="debug"/>
<appender-ref ref="JDBC"/>
</logger>
<logger name="com.streambase.sb.jdbc.activevoice.JdbcBase" additivity="false">
<level value="debug"/>
<appender-ref ref="JDBC"/>
</logger>
<logger name="com.streambase.sb.expr.DataSourceInfoImpl" additivity="false">
<level value="debug"/>
<appender-ref ref="JDBC"/>
</logger>
<logger name="com.streambase.sb.jdbc.activevoice.TimeoutConnection" additivity="false">
<level value="debug"/>
<appender-ref ref="JDBC"/>
</logger>
<root>
<level value="debug"/>
<appender-ref ref="RootConsoleAppender"/>
</root>
</configuration>
Note 1: The logger name for most operators and adapters is the given simple name of that element.
Note 2: If you want any platform-level debug messages to go to any appender, the root logger
must be at "DEBUG" level. The other platform DEBUG messages can then be discarded in the console appender. In this example, setting the root logger to INFO level will suppress JDBC logging.
Note 3: If you create any logger for class "com.streambase.sb.adapter.jms2" or its sub-classes, this will interact and override the other JMS loggers.
In order to find what classes to reference for the loggers, enable global DEBUG logging and examine the console. Things with prefix "c.s.sb.*" become "com.streambase.sb.*" for the logger name.
Ā