<?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.
-->
<metatype:MetaData
    xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.0.0"
    localization="metatype">

    <!-- global configuration through the LogManager -->
    <metatype:OCD id="org.apache.sling.commons.log.LogManager"
        name="%log.name" description="%log.description">
        <metatype:AD id="org.apache.sling.commons.log.level"
            type="String" default="info" name="%log.level.name"
            description="%log.level.description">
            <metatype:Option value="trace" label="Trace" />
            <metatype:Option value="debug" label="Debug" />
            <metatype:Option value="info" label="Information" />
            <metatype:Option value="warn" label="Warnings" />
            <metatype:Option value="error" label="Error" />
        </metatype:AD>
        <metatype:AD id="org.apache.sling.commons.log.file"
            type="String" default="logs/error.log" name="%log.file.name"
            description="%log.file.description" />
        <metatype:AD id="org.apache.sling.commons.log.file.number"
            type="Integer" default="5" name="%log.file.number.name"
            description="%log.file.number.description" />
        <metatype:AD id="org.apache.sling.commons.log.file.size"
            type="String" default="'.'yyyy-MM-dd" name="%log.file.size.name"
            description="%log.file.size.description" />
        <metatype:AD id="org.apache.sling.commons.log.pattern"
            type="String"
            default="%d{dd.MM.yyyy HH:mm:ss.SSS} *%level* [%thread] %logger %msg%n"
            name="%log.pattern.name"
            description="%log.pattern.description" />
        <metatype:AD id="org.apache.sling.commons.log.configurationFile"
             type="String"
             name="%log.config.file.name"
             description="%log.config.file.description" />
        <metatype:AD id="org.apache.sling.commons.log.packagingDataEnabled"
             type="Boolean"
             name="%log.config.packagingData.name"
             description="%log.config.packagingData.description" />
        <metatype:AD id="org.apache.sling.commons.log.maxCallerDataDepth"
             type="Integer"
             default="7"
             name="%log.config.maxCallerDataDepth.name"
             description="%log.config.maxCallerDataDepth.description" />
    </metatype:OCD>
    <metatype:Designate pid="org.apache.sling.commons.log.LogManager">
        <metatype:Object
            ocdref="org.apache.sling.commons.log.LogManager" />
    </metatype:Designate>

    <!-- LoggerWriter factory configuration -->
    <metatype:OCD
        id="org.apache.sling.commons.log.LogManager.factory.writer"
        name="%log.factory.writer.name"
        description="%log.factory.writer.description">
        <metatype:AD id="org.apache.sling.commons.log.file"
            type="String" default="logs/error.log" name="%log.file.name"
            description="%log.file.description" />
        <metatype:AD id="org.apache.sling.commons.log.file.number"
            type="Integer" default="5" name="%log.file.number.name"
            description="%log.file.number.description" />
        <metatype:AD id="org.apache.sling.commons.log.file.size"
            type="String" default="'.'yyyy-MM-dd" name="%log.file.size.name"
            description="%log.file.size.description" />
        <metatype:AD id="org.apache.sling.commons.log.file.buffered"
             type="Boolean" default="false" name="%log.file.buffered.name"
             description="%log.file.buffered.description" />
    </metatype:OCD>
    <metatype:Designate
        pid="org.apache.sling.commons.log.LogManager.factory.writer"
        factoryPid="org.apache.sling.commons.log.LogManager.factory.writer">
        <metatype:Object
            ocdref="org.apache.sling.commons.log.LogManager.factory.writer" />
    </metatype:Designate>

    <!-- LoggerConfig factory configuration -->
    <metatype:OCD
        id="org.apache.sling.commons.log.LogManager.factory.config"
        name="%log.factory.config.name"
        description="%log.factory.config.description">
        <metatype:AD id="org.apache.sling.commons.log.level"
            type="String" default="info" name="%log.level.name"
            description="%log.level.description">
            <metatype:Option value="trace" label="Trace" />
            <metatype:Option value="debug" label="Debug" />
            <metatype:Option value="info" label="Information" />
            <metatype:Option value="warn" label="Warnings" />
            <metatype:Option value="error" label="Error" />
        </metatype:AD>
        <metatype:AD id="org.apache.sling.commons.log.file"
            type="String" default="logs/error.log" name="%log.file.name"
            description="%log.file.description" />
        <metatype:AD id="org.apache.sling.commons.log.pattern"
            type="String"
            default="{0\,date\,dd.MM.yyyy HH:mm:ss.SSS} *{4}* [{2}] {3} {5}"
            name="%log.pattern.name"
            description="%log.pattern.description" />
        <metatype:AD id="org.apache.sling.commons.log.names"
            type="String" name="%log.loggers.name"
            description="%log.loggers.description"
            cardinality="2147483647" />
    </metatype:OCD>
    <metatype:Designate
        pid="org.apache.sling.commons.log.LogManager.factory.config"
        factoryPid="org.apache.sling.commons.log.LogManager.factory.config">
        <metatype:Object
            ocdref="org.apache.sling.commons.log.LogManager.factory.config" />
    </metatype:Designate>
</metatype:MetaData>
