<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
-->
<configuration scan="true">

  <!-- the point of this file (and this project) is to supply a logging framework which:
  
       - makes it easy for a project to get the default logging 
         (include this project, perhaps as an optional dependency (not passed to downstream projects))
         
       - makes it easy for projects to customise that logging
         (override the logback-main.xml file this includes, or any of the files that includes;
         NB those files are in brooklyn-logback-includes)
         
       - makes it easy for projects to opt-out of this type of logging
         (ensure it does not include this project as a dependency)
         
       the core problem this solves is that logback does not like it if there are multiple 
       `logback.xml` files. this restriction does not apply to files included by logback.xml.
  -->
  
  <include resource="logback-main.xml"/>

</configuration>
