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

# See https://logging.apache.org/log4j/2.0/manual/configuration.html#Properties
rootLogger.level = error
rootLogger.appenderRef.stdout.ref = STDOUT

appender.console.name = STDOUT
appender.console.type = Console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %-4r [%t] %-5p %c %x - %m%n

appender.rolling.name = R
appender.rolling.type = RollingFile
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %5p [%C:%M] (%F:%L) - %m%n
appender.rolling.fileName = target/ClusterManagerLogs/log.txt
appender.rolling.filePattern = target/ClusterManagerLogs/log.%d{dd-MMM-hh}.txt.gz
appender.rolling.policies.type = Policies
appender.rolling.policies.startup.type = OnStartupTriggeringPolicy

# Via https://logging.apache.org/log4j/2.x/manual/migration.html
# 'The Log4j 1.x SimpleLayout can be emulated with PatternLayout "%level - %m%n"'
appender.statusdump.name = STATUSDUMP
appender.statusdump.type = RollingFile
appender.statusdump.layout.type = PatternLayout
appender.statusdump.layout.pattern = "%level - %m%n"
appender.statusdump.fileName = target/ClusterManagerLogs/statusUpdates.log
appender.statusdump.filePattern = target/ClusterManagerLogs/statusUpdates.%d{dd-MMM-hh}.log.gz
appender.statusdump.policies.type = Policies
appender.statusdump.policies.startup.type = OnStartupTriggeringPolicy

logger.i0itec.name = org.I0Itec
logger.i0itec.level = error

logger.apache.name = org.apache
logger.apache.level = error

logger.noelios.name = com.noelios
logger.noelios.level = error

logger.restlet.name = org.restlet
logger.restlet.level = error

logger.helixzkdatadump.name = org.apache.helix.monitoring.ZKPathDataDumpTask
logger.helixzkdatadump.level = error
logger.helixzkdatadump.appenderRef.statusdump.ref = STATUSDUMP
