###
# ============LICENSE_START=======================================================
# ONAP CLAMP
# ================================================================================
# Copyright (C) 2017 AT&T Intellectual Property. All rights
#                             reserved.
# ================================================================================
# 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.
# ============LICENSE_END============================================
# ===================================================================
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
###

spring.cloud.config.discovery.enabled=false
spring.cloud.config.enabled=false

# Allow Spring Cloud properties configuration to override properties set from System Properties and ENV Properties
spring.cloud.config.overrideSystemProperties=true

# Path to the file containing the dynamic logger levels
com.att.ajsc.dynamic.logging.path=./logging.properties

# File watcher polling frequency in milliseconds
com.att.ajsc.dynamic.watcher.delay=5000
