<?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.
-->
<!-- 
  File location: see https://logging.apache.org/log4j/2.x/manual/webapp.html 
   ...If no location is defined Log4j will search for a file that starts with "log4j2" in the WEB-INF directory...
   
   Cf. https://logging.apache.org/log4j/2.x/manual/webapp.html
   
   web:rootDir see Web Lookup: https://logging.apache.org/log4j/2.x/manual/lookups.html
-->
<Configuration >
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
	      <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
	    </Console>
	    <File name="avalon" fileName="${web:rootDir}/logs/avalon.log">
	      <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
	    </File>
	     <File name="torque" fileName="${web:rootDir}/logs/torque.log">
          <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
        </File>
         <File name="turbine" fileName="${web:rootDir}/logs/turbine.log">
          <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
        </File>
          <File name="velocity" fileName="${web:rootDir}/logs/velocity.log">
          <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
        </File>
    </Appenders>
    <Loggers>
	     <Logger name="avalon" level="info" additivity="false">
	      <AppenderRef ref="avalon"/>
	    </Logger>
	     <Logger name="org.apache.torque" level="info" additivity="false">
          <AppenderRef ref="torque"/>
        </Logger>
         <Logger name="scheduler" level="info" additivity="false">
          <AppenderRef ref="scheduler"/>
        </Logger>
        <Logger name="org.apache.turbine" level="info" additivity="false">
          <AppenderRef ref="turbine"/>
          <AppenderRef ref="console"/>
        </Logger>
	    <Root level="info">
	      <AppenderRef ref="turbine"/>
	    </Root>
    </Loggers>
</Configuration>