<?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="PRIMARY" class="org.apache.log4j.FileAppender">
    <errorHandler class="org.apache.log4j.varia.FallbackErrorHandler">
      <root-ref/>
      <appender-ref ref="FALLBACK" />
    </errorHandler>

    <!--
        The following path is carefully designed to fail on Linux and Windows,
        so that the appender FALLBACK is used instead and the test succeeds in
        the end. Linux considers "." as current directory, which can not be
        created as a file, while Windows strips "/."[1] internally and fails at
        ":", which is an invalid name.

        [1]: https://en.wikipedia.org/wiki/Filename#Comparison_of_filename_limitations
    -->
    <param name="File"      value="output/xyz/:/."   />
    <param name="Append"    value="false"            />

    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
    </layout>
  </appender>

  <appender name="FALLBACK" class="org.apache.log4j.FileAppender">
    <param name="File" value="output/temp" />
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="FALLBACK - %c - %m%n"/>
    </layout>
  </appender>


  <root>
    <priority value ="debug" />
    <appender-ref ref="PRIMARY" />
  </root>

</log4j:configuration>
