# Copyright (C) 2016 The Android Open Source Project
#
# Licensed 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.
#
log4j.rootCategory=INFO, stderr
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern=[%d] [%t] %-5p %c %x: %m%n

log4j.logger.com.google.gerrit.sshd.CachingPublicKeyAuthenticator=ERROR
log4j.logger.org.eclipse.jgit.lib.Repository=ERROR
log4j.logger.com.google.gerrit.server.git.BatchUpdate=INFO
log4j.logger.com.google.gerrit.server.git.ReceiveCommits=INFO
log4j.logger.com.google.gerrit.server.git=INFO

# Silence non-critical messages from MINA SSHD.
#
log4j.logger.org.apache.mina=WARN
log4j.logger.org.apache.sshd.common=WARN
log4j.logger.org.apache.sshd.server=WARN
log4j.logger.com.google.gerrit.sshd.GerritServerSession=WARN

# Silence non-critical messages from mime-util.
#
log4j.logger.eu.medsea.mimeutil=WARN

# Silence non-critical messages from openid4java
#
log4j.logger.org.apache.http=WARN
log4j.logger.org.apache.xml=WARN
log4j.logger.org.openid4java=WARN
log4j.logger.org.openid4java.consumer.ConsumerManager=FATAL
log4j.logger.org.openid4java.discovery.Discovery=ERROR
log4j.logger.org.openid4java.server.RealmVerifier=ERROR
log4j.logger.org.openid4java.message.AuthSuccess=ERROR

# Silence non-critical messages from c3p0 (if used).
#
log4j.logger.com.mchange.v2.c3p0=WARN
log4j.logger.com.mchange.v2.resourcepool=WARN
log4j.logger.com.mchange.v2.sql=WARN

# Silence non-critical messages from Velocity
#
log4j.logger.velocity=WARN

# Silence non-critical messages from apache.http
log4j.logger.org.apache.http=WARN
