# Licensed to the Apache Software Foundation (ASF) under the terms of ASLv2 (http://www.apache.org/licenses/LICENSE-2.0).

#
# Agent properties:
# 
# These properties control the agent and may also be set through system properties. 
# For a complete list and documentation see the AgentConstants.
#
agent.logging.level=DEBUG

agent.identification.disabled=false
agent.identification.agentid=Agent007

agent.discovery.disabled=false
agent.discovery.serverurls=http://localhost:80,http://localhost:8080
agent.discovery.checking=true

agent.controller.disabled=false
agent.controller.syncdelay=10
agent.controller.syncinterval=10
agent.controller.streaming=false
agent.controller.fixpackages=true
agent.controller.retries=1

agent.connection.disabled=false
agent.connection.authtype=NONE

agent.feedback.channels=auditlog,custom


#
# Framework properties; Keys are prepended by 'framework.'
#
framework.felix.log.level=1