<?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="off" label="Off" />
            <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:AD id="org.apache.sling.commons.log.maxOldFileCountInDump"
             type="Integer"
             default="3"
             name="%log.config.maxOldFileCountInDump.name"
             description="%log.config.maxOldFileCountInDump.description" />
        <metatype:AD id="org.apache.sling.commons.log.numOfLines"
             type="Integer"
             default="1000"
             name="%log.config.numOfLines.name"
             description="%log.config.numOfLines.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:AD id="webconsole.configurationFactory.nameHint"
            type="String"
            default="{org.apache.sling.commons.log.file}"/>
    </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:AD id="webconsole.configurationFactory.nameHint"
            type="String"
            default="{org.apache.sling.commons.log.file}: {org.apache.sling.commons.log.level}"/>
        <metatype:AD id="org.apache.sling.commons.log.additiv"
             name="%log.additiv.name"
             description="%log.additiv.description"
             type="Boolean" />
    </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>
