<?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>
  <property name="logging.basename" scope="context" value="brooklyn" />
  <property name="logging.dir" scope="context" value="./" />

  <!-- this file defines the default logging configuration for brooklyn projects,
       in a way which is intended to be friendly to downstream projects.

       downstream projects may be routed to this file in two situations:

       * running tests (via brooklyn-test-support)
       * dependency on `brooklyn-logback-xml` and running in IDE

       this file may be overridden in downstream projects, as may any of the files incldued here.

       for an _assembly_ (i.e. a redistributable binary) a project must supply
       a logback.xml.  it can route to this file if they wish, or use some of
       the files referenced herein, or ignore it altogether.  (the reason for
       this is that assemblies usually want to declare their own logging anyway.)
  -->

  <!-- set default root logger threshhold to info; some categories may get debug -->
  <root level="INFO"/>
</configuration>