<?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>
	<Properties>
		<Property name="projectPrefix">pirk</Property>
		<Property name="Directory">./logs</Property>
		<Property name="Filename">${projectPrefix}.log</Property>
	</Properties>

	<Appenders>
		<Console name="STDOUT" target="SYSTEM_OUT">
			<PatternLayout pattern="%5p [%t] %d (%F:%L) - %m%n"/>
		</Console>

		<RollingFile name="RollingFile" fileName="${Directory}/${Filename}" filePattern="${projectPrefix}-%i.log">
            <PatternLayout pattern="%d %-5p %-17c{2} %3x - %m%n"/>
			<Policies>
				<SizeBasedTriggeringPolicy size="1 MB"/>
			</Policies>
			<DefaultRolloverStrategy max="2"/>
		</RollingFile>
	</Appenders>

	<Loggers>
		<Logger name="org.apache.hadoop.hbase" level="info" additivity="false"/>
		<Logger name="org.apache.hadoop.hbase.zookeeper" level="warn" additivity="false"/>
		<Logger name="org.apache.zookeeper" level="error" additivity="false"/>
		<Root level="info">
			<AppenderRef ref="STDOUT" level="info"/>
			<AppenderRef ref="RollingFile" level="info"/>
		</Root>
	</Loggers>

</Configuration>
