Skip to content

Latest commit

 

History

History
82 lines (66 loc) · 3.55 KB

File metadata and controls

82 lines (66 loc) · 3.55 KB

ECS Logback Encoder

Step 1: add dependency

Latest version: Maven Central

Add a dependency to your application

<dependency>
    <groupId>co.elastic.logging</groupId>
    <artifactId>logback-ecs-encoder</artifactId>
    <version>${ecs-logging-java.version}</version>
</dependency>

If you are not using a dependency management tool, like maven, you have to add both, logback-ecs-encoder and ecs-logging-core jars manually to the classpath. For example to the $CATALINA_HOME/lib directory.

Step 2: use the EcsEncoder

Spring Boot applications

src/main/resources/logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <include resource="co/elastic/logging/logback/boot/ecs-file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="ECS_JSON_FILE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

You also need to configure the following properties to your application.properties:

spring.application.name=my-application
# for Spring Boot 2.2.x+
logging.file.name=/path/to/my-application.log
# for older Spring Boot versions
logging.file=/path/to/my-application.log

Other applications

All you have to do is to use the co.elastic.logging.logback.EcsEncoder instead of the default pattern encoder in logback.xml

<encoder class="co.elastic.logging.logback.EcsEncoder">
    <serviceName>my-application</serviceName>
</encoder>

Encoder Parameters

Parameter name Type Default Description
serviceName String Sets the service.name field so you can filter your logs by a particular service
eventDataset String ${serviceName}.log Sets the event.dataset field used by the machine learning job of the Logs app to look for anomalies in the log rate.
includeMarkers boolean false Log Markers as tags
stackTraceAsArray boolean false Serializes the error.stack_trace as a JSON array where each element is in a new line to improve readability. Note that this requires a slightly more complex Filebeat configuration.
includeOrigin boolean false If true, adds the log.origin.file.name, log.origin.file.line and log.origin.function fields. Note that you also have to set includeLocation="true" on your loggers and appenders if you are using the async ones.

To include any custom field in the output, use following syntax:

<additionalField>
    <key>foo</key>
    <value>bar</value>
</additionalField>
<additionalField>
    <key>baz</key>
    <value>qux</value>
</additionalField>