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

log4j.logger.xaaudit.org.apache.ranger.audit.provider.Log4jAuditProvider=INFO, hdfsAppender


log4j.appender.hdfsAppender=org.apache.log4j.HdfsRollingFileAppender
log4j.appender.hdfsAppender.hdfsDestinationDirectory=hdfs://%hostname%:8020/logs/application/%file-open-time:yyyyMMdd%
log4j.appender.hdfsAppender.hdfsDestinationFile=%hostname%-audit.log
log4j.appender.hdfsAppender.hdfsDestinationRolloverIntervalSeconds=86400

log4j.appender.hdfsAppender.localFileBufferDirectory=/tmp/logs/application/%hostname%
log4j.appender.hdfsAppender.localFileBufferFile=%file-open-time:yyyyMMdd-HHmm.ss%.log
log4j.appender.hdfsAppender.localFileBufferRolloverIntervalSeconds=15
log4j.appender.hdfsAppender.localFileBufferArchiveDirectory=/tmp/logs/archive/application/%hostname%
log4j.appender.hdfsAppender.localFileBufferArchiveFileCount=12


log4j.appender.hdfsAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.hdfsAppender.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n
log4j.appender.hdfsAppender.encoding=UTF-8
