<?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.

-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:ctx="http://www.springframework.org/schema/context"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:gshell="http://servicemix.apache.org/schema/servicemix-gshell"
       xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context.xsd
  http://www.springframework.org/schema/osgi
  http://www.springframework.org/schema/osgi/spring-osgi.xsd
  http://www.springframework.org/schema/osgi-compendium
  http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util.xsd
  http://servicemix.apache.org/schema/servicemix-gshell
  http://servicemix.apache.org/schema/servicemix-gshell/servicemix-gshell.xsd">

    <gshell:command-bundle>
        <gshell:command name="log/display">
            <gshell:action class="org.apache.felix.karaf.gshell.log.DisplayLog">
                <property name="bundleContext" ref="bundleContext"/>
                <property name="events" ref="events" />
                <property name="pattern" value="${pattern}" />
            </gshell:action>
        </gshell:command>
        <gshell:link name="log/d" target="log/display" />
        <gshell:command name="log/display-exception">
            <gshell:action class="org.apache.felix.karaf.gshell.log.DisplayException">
                <property name="bundleContext" ref="bundleContext"/>
                <property name="events" ref="events" />
            </gshell:action>
        </gshell:command>
        <gshell:link name="log/de" target="log/display-exception" />
        <gshell:command name="log/get">
            <gshell:action class="org.apache.felix.karaf.gshell.log.GetLogLevel">
                <property name="bundleContext" ref="bundleContext"/>
            </gshell:action>
        </gshell:command>
        <gshell:command name="log/set">
            <gshell:action class="org.apache.felix.karaf.gshell.log.SetLogLevel">
                <property name="bundleContext" ref="bundleContext"/>
            </gshell:action>
        </gshell:command>

        <gshell:alias name="ld" alias="log/d" />
        <gshell:alias name="lde" alias="log/de" />
    </gshell:command-bundle>

    <bean id="vmLogAppender" class="org.apache.felix.karaf.gshell.log.VmLogAppender">
        <property name="events" ref="events" />
    </bean>

    <bean id="events" class="org.apache.felix.karaf.gshell.log.LruList">
        <constructor-arg value="${size}" />
    </bean>

    <osgi:service ref="vmLogAppender" interface="org.ops4j.pax.logging.spi.PaxAppender">
        <osgi:service-properties>
            <entry>
                <key><util:constant static-field="org.ops4j.pax.logging.PaxLoggingService.APPENDER_NAME_PROPERTY"/></key>
                <value>VmLogAppender</value>
            </entry>
        </osgi:service-properties>
    </osgi:service>

    <osgix:cm-properties id="cmProps" persistent-id="org.apache.felix.karaf.log">
        <prop key="size">500</prop>
        <prop key="pattern">%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n</prop>
    </osgix:cm-properties>

    <ctx:property-placeholder properties-ref="cmProps" />

</beans>
