<!--
  ~  Licensed to the Apache Software Foundation (ASF) under one
  ~  or more contributor license agreements.  See the NOTICE file
  ~  distributed with this work for additional information
  ~  regarding copyright ownership.  The ASF licenses this file
  ~  to you 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.
  -->

<synapse xmlns="http://ws.apache.org/ns/synapse">

    <!-- simple Synapse configuration -->
    <rules>
        <!-- log all attributes of messages passing through -->
        <log level="full"/>

        <!-- Send the messages where they are destined to (i.e. the 'To' EPR of the message) -->
        <send/>

        <!-- a send or drop mediator [currently] terminates further processing of the current message -->
        <!-- hence the following mediatior will not be invoked on any message -->
        <log level="custom">
            <!-- the log mediator allows custom attributes/properties for a log message. -->
            <property name="message" value="You should not see this"/>
        </log>
    </rules>

</synapse> 