Skip to content

Instantly share code, notes, and snippets.

@moelholm
Created August 3, 2017 17:37
Show Gist options
  • Save moelholm/7ff684717703d027ed72dfea1d8daf86 to your computer and use it in GitHub Desktop.
Save moelholm/7ff684717703d027ed72dfea1d8daf86 to your computer and use it in GitHub Desktop.
Recipe for: Elastic Search log appender with Logback (from a Spring Boot application)
...
ext {
versionLogbackElasticSearchAppender = "1.2"
}
...
dependencies {
compile "com.internetitem:logback-elasticsearch-appender:$versionLogbackElasticSearchAppender"
}
<included>
<property name="LOG_LEVEL_PATTERN" value="[%X{userName} %X{requestId}] %5p"/>
<jmxConfigurator/>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
</included>
<configuration>
<include resource="logback-base.xml" />
<property name="ELASTIC_SEARCH_INDEX_NAME" value="my-index-name-in-elasticsearch" />
<property name="HOST" value="my-apps-hostname" />
<include resource="logback-with-elasticsearch.xml" />
</configuration>
<included>
<appender name="ELASTIC" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
<url>http://my-elastic-search-hostname:9200/_bulk</url>
<index>${ELASTIC_SEARCH_INDEX_NAME}-%date{yyyy-MM-dd}</index>
<type>tester</type>
<loggerName>my-logger</loggerName> <!-- optional -->
<errorLoggerName>my-error-logger</errorLoggerName> <!-- optional -->
<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104,857,600 = 200MB) -->
<maxRetries>3</maxRetries> <!-- optional (default 3) -->
<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
<!--rawJsonMessage>false</rawJsonMessage--> <!-- optional (default false) -->
<properties>
<property>
<name>host</name>
<value>${HOST}</value>
<allowEmpty>false</allowEmpty>
</property>
<property>
<name>severity</name>
<value>%level</value>
</property>
<property>
<name>thread</name>
<value>%thread</value>
</property>
<property>
<name>stacktrace</name>
<value>%ex</value>
</property>
<property>
<name>logger</name>
<value>%logger</value>
</property>
<property>
<name>mdcRequestId</name>
<value>%X{requestId}</value>
</property>
<property>
<name>mdcSessionId</name>
<value>%X{sessionId}</value>
</property>
<property>
<name>mdcUserName</name>
<value>%X{userName}</value>
</property>
</properties>
</appender>
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ELASTIC"/>
</root>
<!-- We don't want to see a never ending cascade of connection failed ERRORS -->
<logger name="my-error-logger" level="OFF" />
<!-- This pattern is important, otherwise it won't be the raw Elasticsearch format anymore -->
<logger name="my-logger" level="INFO" additivity="false">
<appender name="ES_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%msg
</pattern>
</encoder>
</appender>
</logger>
</included>
logback-core 1.1.7
logback-classic 1.1.7
Spring Boot cfg...:
# Log configuration file
logging.config=classpath:logback-for-server.xml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment