<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~  Copyright 1999-2019 Seata.io Group.
  ~
  ~  Licensed under the Apache License, Version 2.0 (the "License");
  ~  you may not use this file except in compliance with the License.
  ~  You may obtain a copy of the License at
  ~
  ~       http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~  Unless required by applicable law or agreed to in writing, software
  ~  distributed under the License is distributed on an "AS IS" BASIS,
  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~  See the License for the specific language governing permissions and
  ~  limitations under the License.
  -->

<included>
    <!-- logstash-appender properties -->
    <springProperty name="LOGSTASH_DESTINATION" source="logging.extend.logstash-appender.destination"
                    defaultValue="127.0.0.1:4560"/>

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- the TCP address of the logstash -->
        <destination>${LOGSTASH_DESTINATION}</destination>

        <!--<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">-->
        <encoder charset="UTF-8" class="io.seata.server.logging.logback.appender.EnhancedLogstashEncoder">
            <!-- the global custom fields -->
            <customFields>
                {
                    "app_name": "${APPLICATION_NAME:-seata-server}"
                }
            </customFields>

            <!-- Exclude the provider of data `@version` -->
            <excludeProvider>net.logstash.logback.composite.LogstashVersionJsonProvider</excludeProvider>
            <!-- Exclude providers that are not currently needed, reduce some performance loss. -->
            <excludeProvider>net.logstash.logback.composite.loggingevent.JsonMessageJsonProvider</excludeProvider>
            <excludeProvider>net.logstash.logback.composite.loggingevent.TagsJsonProvider</excludeProvider>
            <excludeProvider>net.logstash.logback.composite.loggingevent.LogstashMarkersJsonProvider</excludeProvider>
            <excludeProvider>net.logstash.logback.composite.loggingevent.ArgumentsJsonProvider</excludeProvider>
        </encoder>
    </appender>
</included>
