<?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 status="debug" name="Flume" verbose="false" monitorInterval="30">
	<MarkerFilter marker="EVENT" onMatch="ACCEPT" onMismatch="NEUTRAL" />
	<Appenders>

		<Flume name="flume" ignoreExceptions="false" mdcPrefix="ReqCtx_" compress="false">
			<Agent host="localhost" port="8800" />
			<RFC5424Layout enterpriseNumber="12293" includeMDC="true" mdcId="RequestContext" appName="GL" />
		</Flume>
		<Console name="console">
			<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36}:%L %M - %msg%n" />
		</Console>
		<RollingFile name="RollingFile" fileName="${sys:log.dir}/app.log"
			filePattern="${sys:log.dir}/app-%d{MM-dd-yyyy}-%i.log.gz">
			<PatternLayout>
				<pattern>%d %p %C{1.} [%t] %m%n</pattern>
			</PatternLayout>
			<Policies>
				<TimeBasedTriggeringPolicy />
				<SizeBasedTriggeringPolicy size="250 MB" />
			</Policies>
		</RollingFile>
	</Appenders>
	<Loggers>
		<Logger name="EventLogger" level="WARN" additivity="false">
			<AppenderRef ref="flume" />
		</Logger>
		<Root level="debug">
			<AppenderRef ref="RollingFile" />
		</Root>
	</Loggers>
</Configuration>
