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

    <import resource="classpath:org/apache/servicemix/kernel/gshell/core/commands.xml" />

    <gshell:command-bundle>
        <gshell:command name="log/display">
            <gshell:action class="org.apache.servicemix.kernel.gshell.log.DisplayLog">
                <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.servicemix.kernel.gshell.log.DisplayException">
                <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.servicemix.kernel.gshell.log.GetLogLevel" />
        </gshell:command>
        <gshell:command name="log/set">
            <gshell:action class="org.apache.servicemix.kernel.gshell.log.SetLogLevel" />
        </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.servicemix.kernel.gshell.log.VmLogAppender">
        <property name="events" ref="events" />
    </bean>

    <bean id="events" class="org.apache.servicemix.kernel.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.servicemix.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>