<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!--
 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.

-->

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="A1" class="org.apache.log4j.FileAppender">
    
    <param name="File"   value="output\temp.A1.2" />
    <param name="Append" value="false" />	    
    
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
    </layout>	    
  </appender>
  
  <appender name="A2" class="org.apache.log4j.FileAppender">
    <param name="File" value="output\temp.A2.2" />
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.TTCCLayout">
      <param name="DateFormat" value="ISO8601" />
    </layout>		
  </appender>
  
  <logger name="org.apache.log4j.xml">
    <level value="debug" />
    <appender-ref ref="A1" />
  </logger>
  
  <root>
    <priority value ="debug" />
    <appender-ref ref="A1" />
    <appender-ref ref="A2" />
  </root>
  
</log4j:configuration>
