<?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 } %c{15}:%L [%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>
