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

<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="logback.xsd">
	<contextName>${current_openmeetings_context_name}</contextName>
	
	<jmxConfigurator contextName="${current_openmeetings_context_name}" />

  <appender name="FLOG2" class="ch.qos.logback.core.FileAppender">
		<File>log/${current_openmeetings_context_name}.log</File>
		<Append>false</Append>
		<Encoding>UTF-8</Encoding>
		<BufferedIO>false</BufferedIO>
		<ImmediateFlush>true</ImmediateFlush>
		<layout class="ch.qos.logback.classic.PatternLayout">
			<Pattern>
				%5p %d{MM-dd HH:mm:ss.SSS } %F %r %L %c [%t] - %m%n
			</Pattern>
		</layout>
  </appender>
  <appender name="CONSOLE2" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>%5p %d{MM-dd HH:mm:ss.SSS } %F %r %L %c [%t] - %m%n</pattern>
    </layout>
  </appender>
  <logger name="org.apache.axis2">
    <level value="ERROR"/>
  </logger>
  <logger name="com.mchange.v2">
    <level value="ERROR"/>
  </logger>
  <logger name="org.apache.axiom">
    <level value="ERROR"/>
  </logger>
  <logger name="org.apache.commons.httpclient">
    <level value="ERROR"/>
  </logger>
  <logger name="de.hunsicker.jalopy.io">
    <level value="ERROR"/>
  </logger>
  <logger name="org.apache.axis2.enterprise">
    <level value="ERROR"/>
  </logger>
  <logger name="httpclient.wire.header">
    <level value="ERROR"/>
  </logger>
  <root>
    <level value="DEBUG"/>
    <appender-ref ref="FLOG2"/>
    <appender-ref ref="CONSOLE2"/>
  </root>
</configuration>
