<?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 monitorInterval="60">
   <Appenders>

      <properties>
         <property name="filters">net.sf.cglib.proxy</property>
      </properties>

      <!-- ============================== -->
      <!-- Append messages to the console -->
      <!-- ============================== -->

      <Console name="CONSOLE" target="SYSTEM_OUT">
         <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
         <PatternLayout pattern="%d{DEFAULT} %-5p [%c{3}] (%t:%x) %m%xEx{filters(${filters})}%n"/>
      </Console>
   </Appenders>

   <Loggers>

      <Logger name="com.cloud" level="DEBUG"/>

      <Logger name="org.apache" level="INFO"/>

      <Logger name="org" level="INFO"/>

      <Logger name="net" level="INFO"/>

      <Logger name="apiserver.com.cloud"  level="DEBUG"/>

      <!-- ======================= -->
      <!-- Setup the Root category -->
      <!-- ======================= -->

      <Root level="INFO">
         <AppenderRef ref="CONSOLE"/>
      </Root>

   </Loggers>
</Configuration>
