
{#
Copyright 2017-present Open Networking Foundation

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


[udpservice]
udp_address = {{ listen_ip_addr }}
udp_port = 4455
rabbit_userid = {{ rabbit_user }}
rabbit_password = {{ rabbit_password }}
rabbit_hosts = {{ rabbit_host }}
acord_control_exchange = openstack_infra

[loggers]
keys=root

[handlers]
keys=logfile

[formatters]
keys=logfileformatter

[logger_root]
level=INFO
#level=DEBUG
handlers=logfile

[formatter_logfileformatter]
format='%(asctime)s %(filename)s %(levelname)s %(message)s'

[handler_logfile]
class=handlers.RotatingFileHandler
level=NOTSET
args=('udpagent.log','a',1000000,100)
formatter=logfileformatter
