# log4cxx configuration for HDFS access via JNI

# @@@ START COPYRIGHT @@@
#
# 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.
#
# @@@ END COPYRIGHT @@@

log4j.rootLogger=INFO, rootAppender

log4j.appender.rootAppender=org.apache.log4j.RollingFileAppender
log4j.appender.rootAppender.fileName=hdfs.log
log4j.appender.rootAppender.maxFileSize=100000000
log4j.appender.rootAppender.maxBackupIndex=1
log4j.appender.rootAppender.addPid=false
log4j.appender.rootAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.rootAppender.layout.ConversionPattern=%d, %p, %c, %m%n

log4j.logger.JniTop=ERROR
log4j.logger.SeqFileReader=ERROR
log4j.logger.SeqFileWriter=ERROR
log4j.logger.HBase=ERROR
