Code

First we need to add the required packages to our project. We do this by adding the references to ‘pom.xml‘.

...
<repository>
  <id>splunk-artifactory</id>
  <name>Splunk Releases</name>
  <url>https://splunk.jfrog.io/splunk/ext-releases-local</url>
</repository>
...
</repositories>

Now we need to tell Maven the dependencies we actually want:

<dependencies>
...
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.10</version>
</dependency>
<dependency>
  <groupId>com.splunk.logging</groupId>
  <artifactId>splunk-library-javalogging</artifactId>
  <version>1.8.0</version>
</dependency>
...
</dependencies>

Place the following content in a file called ‘logback.xml’. Read more here.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="socket" class="com.splunk.logging.TcpAppender">
        <RemoteHost>127.0.0.1</RemoteHost>
        <Port>8088</Port>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%thread %level: %msg%n</pattern>
        </layout>
    </appender>
    <logger name="splunk.logger" additivity="false" level="INFO">
        <appender-ref ref="socket"/>
    </logger>
    <root level="INFO">
        <appender-ref ref="socket"/>
    </root>
    <appender name="http" class="com.splunk.logging.HttpEventCollectorLogbackAppender">
        <url>${SPLUNK_URL}</url>
        <token>${SPLUNK_TOKEN}</token>
        <source>${SPLUNK_SOURCE}</source>
        <sourcetype>_json</sourcetype>
        <messageFormat>text</messageFormat>
        <middleware>HttpEventCollectorUnitTestMiddleware</middleware>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%msg</pattern>
        </layout>
    </appender>
    <logger name="splunk.logger" additivity="false" level="INFO">
        <appender-ref ref="http"/>
    </logger>
    <root level="INFO">
        <appender-ref ref="http"/>
    </root>
</configuration>

You can now pass the URL, Source (for filtering your logs) and Token using environment variables or a different way. See ‘variable substitution‘.