# Copyright 2011 The Apache Software Foundation
#
# 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.appender.wfmanagerview=org.apache.log4j.RollingFileAppender
log4j.appender.wfmanagerview.File=${ambari.log.dir}/wfmanager-view/wfmanager-view.log
log4j.appender.wfmanagerview.MaxFileSize=80MB
log4j.appender.wfmanagerview.MaxBackupIndex=60
log4j.appender.wfmanagerview.layout=org.apache.log4j.PatternLayout
log4j.appender.wfmanagerview.layout.ConversionPattern=%d{DATE} %5p [%t] [%X{viewName} %X{viewVersion} %X{viewInstanceName}] %c{1}:%L - %m%n

log4j.logger.org.apache.oozie.ambari.view=INFO,wfmanagerview
log4j.logger.org.apache.ambari.view.workflowmanager=INFO,wfmanagerview
log4j.additivity.org.apache.oozie.ambari.view= false
log4j.additivity.org.apache.ambari.view.workflowmanager= false
