<?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 xmlns="http://logging.apache.org/log4php/">
    <appender name="firePhpAppender" class="LoggerAppenderFirephp">
        <layout class="LoggerLayoutSimple" />
        <param name="medium" value="page" />
    </appender>
    <appender name="consoleAppender" class="LoggerAppenderConsole" />

    <root>
        <level value="DEBUG" />
        <appender_ref ref="firePhpAppender" />
        <appender_ref ref="consoleAppender" />
    </root>
</configuration>
