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

<logkit logger="system.logkit" log-level="INFO"
   manager-class="org.apache.avalon.excalibur.logger.LogKitLoggerManager">
<!--
    The manager-class is what determines the underlying log implementation
    In this case, it is Avalon LogKit.
    Not sure what logger and log-level are for.
-->

    <factories>
      <factory type="file"
           class="org.apache.avalon.excalibur.logger.factory.FileTargetFactory"/>
    </factories>

    <targets>
      <!-- Sample entry showing custom format -->
      <file id="logFile" >
         <append>false</append>
         <filename>format.log</filename>
         <format type="pattern">
AT: %{time:yyyy/MM/dd HH:mm:ss} PRI: %5.5{priority} CAT: %{category} TEXT: %{message} EX: %{throwable}\n
         </format>
      </file>

      <!-- Sample entry showing unique names. SSS = milliseconds -->
      <file id="logUnique" >
         <append>false</append>
         <filename>prefix</filename>
         <rotation type="unique" pattern="yyyy-MM-dd-hh-mm-ss-SSS" suffix=".log">
             <size>1000000</size>
         </rotation>
         <!-- can also add a format here -->
      </file>

      <!--
        Sample entry showing how to rotate files, i.e. my_log.000001 etc
        -->
      <file id="logRevolve" >
         <append>false</append>
         <filename>my_log</filename>
         <rotation type="revolving" init="1" max="10">
             <size>1000000</size>
             </rotation>
         <!-- can also add a format here -->
      </file>



    </targets>

    <categories>
      <!--
        Notes:
        * must define the default category, i.e. where name = "" 
        * each log-target id-ref must refer to a valid file entry
        -->
      <category name="" log-level="INFO">
        <log-target id-ref="logFile"/>
      </category>
      
      <!--
        Further categories can be defined if required; they can have
        the same or different targets, but the targets must exist
        -->
      <category name="jorphan" log-level="WARN">
        <log-target id-ref="logRevolver"/>
      </category>
      
    </categories>
</logkit>
<!--
Documentation extracted from FileTargetFactory class.
This factory is able to create different FileLogTargets according to the 
 following configuration syntax: 
 <file id="foo">
  <filename>${context-key}/real-name/...</filename>
  <format type="avalon|raw|pattern|extended">pattern to be used if needed</format>
  <append>true|false</append>
  <rotation type="revolving" init="5" max="10">

 or

  <rotation type="unique" pattern="yyyy-MM-dd-hh-mm-ss" suffix=".log">
   <or>
    <size>10000000</size>
    <time>24:00:00</time>
    <time>12:00:00</time>
   </or>
  </rotation>
 </file>
 
Some explanations about the Elements used in the configuration: 
<filename>
     This denotes the name of the file to log to. It can be constructed out of entries in the 
      passed Context object as ${context-key}. This element is required. 
<format>
     The type attribute of the pattern element denotes the type of Formatter to be used and 
      according to it the pattern to use for. This elements defaults to: 
%7.7{priority} %5.5{time} [%8.8{category}] (%{context}): %{message}\\n%{throwable} 
<append>      If the log file should be deleted every time the logger is creates (normally at the 
 start of the applcation) or not and thus the log entries will be appended. This elements defaults to 
 false. 
<rotation>
     This is an optional element. The type attribute determines which FileStrategy to user 
      (revolving=RevolvingFileStrategy, unique=UniqueFileStrategy). The required init and max attribute 
      are used to determine the initial and maximum rotation to use on a type="revolving" attribute. The 
      optional pattern and suffix attribute are used to form filenames on a type="unique" attribute. 
The initial rotation can be set to -1 in which case the system will first create the maximum number 
 of file rotations by selecting the next available rotation and thereafter will overwrite the oldest log 
 file. 
<or>
    uses the OrRotateStrategy to combine the children
<size>
     The number of bytes if no suffix used or kilo bytes (1024) if suffixed with 'k' or mega bytes 
      (1024k) if suffixed with 'm' when a file rotation should occur. It doesn't make sense to specify more 
      than one. 
<time>
     The time as HH:MM:SS when a rotation should occur. If you like to rotate a logfile more 
      than once a day put an <or> element immediately after the <rotation> element and specify the 
      times (and one size, too) inside the <or> element. 
<date>
     Rotation occur when string formatted date changed. Specify date formatting pattern. 
<interval>
     Interval at which a rotation should occur. The interval should be given in the format ddd:
      hh:mm:ss. 
-->