<?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. -->
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n" />
    </layout>
  </appender>

  <appender name="rolling_file" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="/var/log/ambari-logsearch-portal/logsearch-app.log" />
    <param name="Threshold" value="info" />
    <param name="append" value="true" />
    <param name="maxFileSize" value="10MB" />
    <param name="maxBackupIndex" value="10" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d %-5p [%t] %C{6} (%F:%L) - %m%n" />
    </layout>
  </appender>

  <!-- Logs to suppress BEGIN -->
  <category name="org.apache.solr.common.cloud.ZkStateReader" additivity="false">
    <priority value="error" />
    <appender-ref ref="console" />
  </category>
  <!-- Logs to suppress END -->

  <root>
    <level value="debug" />
    <appender-ref ref="console" />
    <appender-ref ref="rolling_file" />
  </root>
</log4j:configuration>
