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


;
; Allura configuration
;
; Default config values are shown in this file.
; Commented-out configurations are examples that you can use if you want.
;
; Logging configuration is at the end of the file (starting at [loggers])
;
; There are many settings you should change for your site (name, domain, secret keys, etc)
; More settings should be changed for good performance in a production site (no autoreload, no debugging, etc)
;
; You may copy this file to make a new configuration file (e.g. production.ini)
; Or inherit from this file by starting your .ini file like this:
;    [app:main]
;    use = config:development.ini#main
; Then just use the new file name instead of development.ini for any paster commands you run.


[DEFAULT]
; this section is for a few settings that are shared with error handling middleware

; WARNING: *THE LINE BELOW MUST BE CHANGED ON A PRODUCTION ENVIRONMENT*
; Debug mode will enable the interactive debugging tool, allowing ANYONE to
; execute malicious code after an exception is raised.
debug = true
; If you want to receive an email for every unhandled HTTP 500 error, set your email address here:
;email_to = you@yourdomain.com
error_email_from = paste@localhost

; SMTP settings for outgoing mail
smtp_tls = false
smtp_ssl = false
;smtp_user = some_user
;smtp_password = some_password
smtp_timeout = 10
smtp_server = localhost
smtp_port = 8826
; Reply-To and From address often used in email notifications:
forgemail.return_path = noreply@localhost


;
; Settings for `paster serve` command
;
[server:main]
use = egg:Paste#http
host = 0.0.0.0
port = 8080


;
; The main allura settings
;
[app:main]
use = egg:Allura
full_stack = true

; Change this to your website's name
site_name = Allura
; Change these to your website's domain
domain = localhost
; Change this to your website's full URL
base_url = http://localhost:8080
; This should be the same as base_url
forgemail.url = http://localhost:8080

; Change this to configure your image path and redirect link
; for the logo
; NOTE: specify your static.url_base before config this
; Save your picture in images folder
; Example: ../<static_path>/images/<logo_path>
; In default configuration you can place images under
; `Allura/allura/public/nf/images/` and specify file name below
; logo.link = /
; logo.path = sf10a.png
; logo.width = 125 ; in px
; logo.height = 18 ; in px

; Used to uniquify references to static resources, can be a timestamp or any unique value
; This should be updated each time you deploy (or make significant changes, like new tools, new css)
build_key=1276635823

; Used by Turbogears / Pylons in some cases.  Not particularly relevant for Allura.
cache_dir = %(here)s/data

; Cache Neighborhood objects for N seconds (speeds up requests).
; Set to 0 to disable (the default).
;neighborhood.cache.duration = 0

; Template cache settings
; See http://jinja.pocoo.org/docs/api/#jinja2.Environment
jinja_cache_size = -1
;jinja_bytecode_cache_type = filesystem
;jinja_bytecode_cache_type = memcached
;memcached_host =

; Docs at http://beaker.readthedocs.org/en/latest/configuration.html#session-options
; and http://beaker.readthedocs.org/en/latest/modules/session.html#beaker.session.CookieSession
beaker.session.key = allura
beaker.session.type = cookie
beaker.session.httponly = true
; set this to true if you use HTTPS.  If you use force_ssl.logged_in, this will be set automatically when logged in and not when not.
beaker.session.secure = false
; CHANGE THIS VALUE FOR YOUR SITE
beaker.session.validate_key = 714bfe3612c42390726f

;
; Settings for global navigation
;
; Override this to specify your custom navigation links
global_nav = [{"title": "Site Home", "url": "/"}]

; Google Analytics account for tracking
;ga.account = UA-XXXXX-X

; Project registration system.  Only local is available, unless you write a custom one for custom integration.
registration.method = local
theme = allura

; For LDAP see https://forge-allura.apache.org/docs/getting_started/installation.html#using-ldap
;auth.method = ldap
auth.method = local
auth.remember_for = 365  ; in days, for the "remember me" checkbox on login

; Customize login/logout URLs only if you have some custom authentication set up.
auth.login_url = /auth/
auth.logout_url = /auth/logout
; the login fragement URL shows just the form, not a whole page.  It is used within a login overlay on some pages
auth.login_fragment_url = /auth/login_fragment/
auth.post_logout_url = /

auth.min_password_len = 6
auth.max_password_len = 30

; password expiration options (disabled if neither is set)
;auth.pwdexpire.days = 1
;auth.pwdexpire.before = 1401949912  ; unix timestamp

; if using LDAP, also run `pip install python-ldap` in your Allura environment

auth.ldap.server = ldaps://localhost/
auth.ldap.suffix = ou=people,dc=localdomain
auth.ldap.admin_dn = cn=admin,dc=localdomain
auth.ldap.admin_password = secret
auth.ldap.schroot_name = scm
auth.ldap.use_schroot = false
auth.ldap.password.algorithm = 6
auth.ldap.password.rounds = 6000
auth.ldap.password.salt_len = 16
; "autoregister" allows users to log in to Allura with an existing LDAP account
; If using ldap, with autoregister, you should also set "allow_user_registration"
; to false below.
; Set "autoregister" to false to require user to register in Allura to create
; the LDAP record and Allura record for the user.
auth.ldap.autoregister = true

auth.allow_user_registration = true
auth.allow_user_to_disable_account = true
auth.allow_edit_prefs = true
auth.allow_password_change = true
auth.allow_user_messages_config = true
auth.allow_birth_date = true
auth.allow_non_primary_email_password_reset = true
auth.require_email_addr = true
; List of social network options to use on user account settings
socialnetworks = Facebook, Linkedin, Twitter, Google+

; Allow uploading ssh key, optionally set ssh preferences url
auth.allow_upload_ssh_key = false
auth.upload_ssh_url = /auth/preferences/

; In seconds
auth.recovery_hash_expiry_period = 600

; Some pages require users to reconfirm their password.  This controls how long that lasts for
auth.reconfirm.seconds = 120

; TOTP stands for Time-based One Time Password
; it is the most common two-factor auth protocol, used with Google Authenticator and other phone apps
auth.multifactor.totp = true
; Length of codes, 6 or 8 is recommended
auth.multifactor.totp.length = 6
; Time window codes are valid, in seconds.  30 is recommended
auth.multifactor.totp.time = 30
; secret key storage location.  "filesystem-googleauth" is another option (compatible with Google Authenticator PAM plugin)
auth.multifactor.totp.service = mongodb
; if using filesystem storage:
auth.multifactor.totp.filesystem.basedir = /var/lib/allura/totp-keys

; recovery code storage location.  "filesystem-googleauth" is another option (compatible with Google Authenticator PAM plugin)
auth.multifactor.recovery_code.service = mongodb
; number of recovery codes to generate per user
auth.multifactor.recovery_code.count = 10
; length of each code.  Must be 8 for compatibility with "filesystem-googleauth" files
auth.multifactor.recovery_code.length = 8


user_prefs_storage.method = local
; user_prefs_storage.method = ldap
; If using ldap, you can specify which fields to use for a preference.
; Any fields not specified here will be stored locally in mongo
user_prefs_storage.ldap.fields.display_name = cn

; Limit the number of emails a user can claim.
user_prefs.maximum_claimed_emails = 20

; Control the order of sections on the user profile page
;user_profile_sections.order = activity, personal-data, skills

; Site admins will be the same as the admins of this project:
site_admin_project = allura
site_admin_project_nbhd = Projects

; Spam filtering service: mollom or akismet
;spam.method = akismet
; for akismet:
;spam.key =
; for mollom:
;spam.public_key =
;spam.private_key =

; Phone verification service: Nexmo Verify
; phone.method = nexmo
; phone.api_key =
; phone.api_secret =
; Language to use, if provider supports it.  Values for Nexmo Verify: https://docs.nexmo.com/index.php/verify#localization
; phone.lang = en-us

; Use phone verification on project registration (false by default)
; project.verify_phone = true

; Webhook timeout in seconds
webhook.timeout = 30
; List of pauses between retries, if hook fails (in seconds)
webhook.retry = 60 120 240
; Limit rate of webhook firing (in seconds, default = 30)
; Option format: webhook.<hook type>.limit,
; all '-' in hook type must be changed to '_'
; e.g. for repo-push webhook:
webhook.repo_push.limit = 30
; Limit max number of hooks that can be created for given project/app
; Option name format: same as above.
; Value format: json dict, where keys are app names (as appears in
; `WebhookSender.triggered_by`) and values are actual limits (default=3), e.g.:
webhook.repo_push.max_hooks = {"git": 3, "hg": 3, "svn": 3}

;; Allow Cross-Origin Resource Sharing (CORS) requests to the REST API
; disabled by default, uncomment the following options to enable:
;cors.enabled = true
;cors.methods = GET HEAD POST PUT DELETE
;cors.headers = Authorization Accept Content-Type
; Allow clients to cache preflight responses for N seconds
; Set to 0 or remove completely to disable
;cors.cache_duration = 86400

; Additional fields for admin project/user search
; Note: whitespace after comma is important!
;search.project.additional_search_fields = private, url, title
;search.user.additional_search_fields = email_addresses

; Additional fields to show in the result of admin project/user search
; Note: whitespace after comma is important!
;search.project.additional_display_fields = private, url, title
;search.user.additional_display_fields = email_addresses

; To make all pages use ssl:   (also set beaker.session.secure above)
;force_ssl.pattern = .
; To use ssl if and only if a user is logged in:
;force_ssl.logged_in = true
; If you set force_ssl.logged_in, you probably want some URLs to be ssl when logged out:
;force_ssl.pattern = ^/auth|^/[a-z0-9-]+/import_project/  ; import_project uses a login overlay
; And to permit some URLs to be accessed over http anyway:
;    /_test_vars is used when running `paster shell`
;no_redirect.pattern = ^/nf/\d+/_(ew|static)_/|^/rest/|^/nf/tool_icon_css|^/auth/refresh_repo|^/_test_vars


; Set the locations of some static resources.  ("ew" stands for EasyWidgets library)
;  script_name is the path that is handled by the application
;  url_base is the prefix that references to the static resources should have
; If you use a CDN, put your CDN prefix in the url_base values
ew.script_name = /nf/%(build_key)s/_ew_/
ew.url_base = /nf/%(build_key)s/_ew_/
static.script_name = /nf/%(build_key)s/_static_/
static.url_base = /nf/%(build_key)s/_static_/

; Expires header for "static" resources served through allura (e.g. icons, attachments, /nf/tool_icon_css)
files_expires_header_secs = 1209600 ; 2 weeks

; EasyWidgets settings
; This CORS header is necessary if serving webfonts via a different domain
ew.extra_headers = [ ('Access-Control-Allow-Origin', '*') ]
; In production, comment this out and it will default to 1 year.  Update build_key whenever you deploy new code, instead.
ew.cache_header_seconds = 0

; If your environment (e.g. behind a server-side proxy) needs to look at an http header to get the actual remote addr
;ip_address_header = X-Forwarded-For

; SCM settings for local development
scm.host.ro.git = /srv/git$path
scm.host.rw.git = /srv/git$path
; remote access varies by configuration.  If you are using a vagrant VM, this should work:
;scm.host.rw.git = ssh://vagrant@localhost:2222/srv/git$path
scm.host.ro.hg = /srv/hg$path
scm.host.rw.hg = /srv/hg$path
scm.host.ro.svn = file:///srv/svn$path/
scm.host.rw.svn = file:///srv/svn$path/

; SCM settings for chroot + ldap configuration.  See Allura/docs/getting_started/scm_host.rst
;scm.host.ro.git = git://git.localhost$path
;scm.host.rw.git = ssh://$username@localhost:8022/scm-repo$path
;scm.host.ro.hg = http://hg.localhost$path
;scm.host.rw.hg = ssh://$username@localhost:8022/scm-repo$path
;scm.host.ro.svn = http://svn.localhost$path/
;scm.host.rw.svn = svn+ssh://localhost:8022/scm-repo$path/

; SCM settings for https (sorry no docs for setting these up)
; these settings are currently required by the template, no matter what
scm.host.https.git = https://$username@localhost:8022/scm-repo$path
scm.host.https_anon.git = https://localhost:8022/scm-repo$path
scm.host.https.hg = https://$username@localhost:8022/scm-repo$path
scm.host.https_anon.hg = https://localhost:8022/scm-repo$path
scm.host.https.svn = https://localhost:8022/scm-repo$path/
scm.host.https_anon.svn = https://localhost:8022/scm-repo$path/

scm.clone.git = git clone $source_url $dest_path
scm.clone.hg = hg clone $source_url $dest_path
scm.clone.ro.svn = svn checkout $source_url $dest_path
scm.clone.https_anon.svn = svn checkout $source_url $dest_path
scm.clone.svn = svn checkout --username=$username $source_url $dest_path

; Only needed if different than "base_url" (e.g. if "base_url" isn't reachable from SCM hosts and you need an internal hostname)
;scm.repos.refresh_base_url = http://localhost:8080

scm.repos.root = /srv
scm.repos.tarball.enable = false
scm.repos.tarball.root = /usr/share/nginx/www/
scm.repos.tarball.url_prefix = http://localhost/
scm.repos.tarball.zip_binary = /usr/bin/zip

; SCM imports (currently just SVN) will retry if it fails
; You can control the number of tries and delay between tries here:
scm.import.retry_count = 50
scm.import.retry_sleep_secs = 5

; When getting a list of valid references (branches/tags) from a repo, you can cache
; the results in mongo based on a threshold. Set `repo_refs_cache_threshold` (in seconds) and the resulting
; lists will be cached and served from cache on subsequent requests until reset by `repo_refresh`.
; Set to 0 to cache all references. Remove entirely to cache nothing.
repo_refs_cache_threshold = .01

; Enabling copy detection will display copies and renames in the commit views
; at the expense of much longer response times. SVN tracks copies by default.
scm.commit.git.detect_copies = true
scm.commit.hg.detect_copies = false

; One-click merge is enabled by default, but can be turned off on for each type of repo
scm.merge.git.disabled = false
scm.merge.hg.disabled = false

; Merge request viewing will fetch git info into existing git repositories. On
; deployments where writes in existing git repos are unwanted, clone to tmp dir
; can be used.
;scm.merge_list.git.use_tmp_dir = true

; bulk_export_enabled = true
; If you keep bulk_export_enabled, you should set up your server to securely share bulk_export_path with users somehow
bulk_export_path = /tmp/bulk_export/{nbhd}/{project}
bulk_export_filename = {project}-backup-{date:%Y-%m-%d-%H%M%S}.zip
; You will need to specify site-specific instructions here for accessing the exported files.
bulk_export_download_instructions = Sample instructions for {project}

importer_upload_path = /tmp/importer_upload/{nbhd}/{project}

; To disable any plugin, tool, importer, etc from being available, you can use the disable_entry_points config option.
; Specify the keys and values as they are declared in the tool's "setup.py" file.
; Examples:
;disable_entry_points.allura.importers = github-tracker, github-wiki, github-repo
;disable_entry_points.allura.project_importers = github

; Importers specifically, can be left enabled but not linked to.  You have to know the URL to use it.  Example:
;hidden_importers = trac-tickets

; GitHub importer keys.  For github ticket import, it is best to set
; up an app at https://github.com/settings/applications  Use the root URL
; of your Allura instance for both URLs, and enter client values here:
;github_importer.client_id =
;github_importer.client_secret =

; If your site has docs about specific importers, you can add them here and
; they'll appear on the import forms
;doc.url.importers.GitHub = http://...

; List of oauth API keys permitted to use special forum import API
; (should be converted to newer importer system)
;oauth.can_import_forum = api-key-1234, fa832r0fdsafd, f23f80sdf32fd


; space-separated list of tool names that are valid options
; for project admins to set for their 'support_page' field
; this field is not used by default in Allura, so this option
; is disabled by default
;support_tool_choices = wiki tickets discussion

; Control how /categories URL can be accessed to edit trove categories (used in project categories and user skills)
; Default: everyone
trovecategories.enableediting = true
; Nobody:
;trovecategories.enableediting = false
; Site admins only:
;trovecategories.enableediting = admin

; ActivityStream
activitystream.master = mongodb://127.0.0.1:27017
activitystream.database = activitystream
activitystream.activity_collection = activities
activitystream.node_collection = nodes
activitystream.timeline_collection = timelines
activitystream.enabled = true
activitystream.recording.enabled = true
activitystream.ming.auto_ensure_indexes = false

; Ming setup
; These don't necessarily have to be separate databases, they could
; be all in the same database if desired
ming.main.uri = mongodb://127.0.0.1:27017/allura
ming.main.auto_ensure_indexes = False
ming.project.uri = mongodb://127.0.0.1:27017/project-data
ming.project.auto_ensure_indexes = False
ming.task.uri = mongodb://127.0.0.1:27017/task
ming.task.auto_ensure_indexes = False

; A float from 0-1 representing a % of requests to measure timing on.
; Sampled requests will have timing logged to stats.log (can change file in [handler_timermiddleware] logging section)
stats.sample_rate = 1

; Taskd setup
; number of seconds to sleep between checking for new tasks
monq.poll_interval=2

; SOLR setup
solr.server = http://localhost:8983/solr/allura
; Alternate server to use just for querying
;solr.query_server =
; Shorter timeout for search queries (longer timeout for saving to solr)
solr.short_timeout = 10
; commit on every add/delete?
solr.commit = false
; commit add operations within N ms
solr.commitWithin = 10000
; Use improved data types for labels and custom fields?
; New Allura deployments should leave this set to true. Existing deployments
; should set to false until existing data has been reindexed. Reindexing will
; convert existing label and custom field data to more appropriate solr types.
solr.use_new_types = true

; Incoming email settings.  Used when you run: paster smtp_server development.ini
; address to listen to
forgemail.host = 0.0.0.0
forgemail.port = 8825
; domain suffix for your mail, change this.  You also need to route *.*.*.forgemail.domain to the above host/port via
; your mail and DNS configuration
forgemail.domain = .in.localhost

; Specify the number of projects allowed to be created by a user depending on the age of their user account.
; Keys are number of seconds, values are max number allowed until that time period is reached.
; NOTE: this includes the default user-profile project, so you probably want to set any limits higher by 1.
; This example allows for up to 2 total projects if the account is less than an hour old
; and 6 total projects if the account is less than a day old.  No limits after that.
;project.rate_limits = {"3600": 2, "86400": 6}

; Specify the number of artifacts allowed to be created in a project, depending on the age of the project
; Currently supports only tickets and wiki page creation rate limiting.
; Keys are number of seconds, values are max number allowed until that time period is reached
;forgewiki.rate_limits = {"3600": 100, "172800": 10000}
;forgetracker.rate_limits = {"3600": 100, "172800": 10000}
;forgeblog.rate_limits = {"3600": 100, "172800": 10000}

; Number of different wiki pages, tickets, etc that a user can create or edit, per time period, across all projects
; Keys are number of seconds, values are max number allowed until that time period is reached
; NOTE: wiki pages include the default "Home" page created for the user-project and any other projects created by the user
;forgewiki.rate_limits_per_user =    {"60": 3, "120": 3, "900": 5, "1800": 7, "3600": 10, "7200": 15, "86400": 20, "604800": 50, "2592000": 200}
;forgetracker.rate_limits_per_user = {"60": 1, "120": 3, "900": 5, "1800": 7, "3600": 10, "7200": 15, "86400": 20, "604800": 50, "2592000": 200}
;forgeblog.rate_limits_per_user =    {"60": 1, "120": 3, "900": 5, "1800": 7, "3600": 10, "7200": 15, "86400": 20, "604800": 50, "2592000": 200}

; set this to "false" if you are deploying to production and want performance improvements
auto_reload_templates = true

; How frequently users can send messages, in seconds
user_message.time_interval = 3600
; Max number of messages that can be sent within that time interval.
user_message.max_messages = 20

; Default number of times to show a sitewide notification
; See https://forge-allura.apache.org/docs/getting_started/administration.html#site-notifications
site_notification.impressions = 0

; When rendering discussion post Markdown to html, if the render takes longer
; than `markdown_cache_threshold` (in seconds), the resulting html will be
; cached and served from cache on subsequent requests. Set to 0 to cache all
; posts. Remove entirely to cache nothing.
markdown_cache_threshold = .1
; markdown text longer than max length will not be converted to html
markdown_render_max_length = 100000
; Don't add rel=nofollow to these domains when generating links from Markdown content
;nofollow_exempt_domains =

; Export control choices on the project admin overview page.
show_export_control = false

; By default project admins can soft-delete their projects.
; A soft-deleted project will still be in the database and visible to admins, but not to others.
allow_project_delete = true
allow_project_undelete = true

; Advanced settings for controlling "Last Commit Doc" algorithm used when visiting any repo browse page
lcd_thread_chunk_size = 10
lcd_timeout = 60

; Many URLs support a param like limit=50  This setting controls the max value allowed for that parameter.
; Allowing exceedingly high values may have a performance impact
limit_param_max = 500



;
; Settings for the Blog tool
;
; Enable or disable external RSS feed importing in ForgeBlog tool.
; Default is "false". This feature requires GPL library "html2text". Install it with following command:
;   pip install -e git://github.com/brondsem/html2text.git#egg=html2text
; You will also need to run `paster pull-rss-feeds development.ini` in a cron job to fetch them.
forgeblog.exfeed = false

;
; Settings for the Chat tool
;
forgechat.host = irc.freenode.net
forgechat.port = 6667
ircbot.nick = allurabot

;
; Settings for ShortUrl tool
;
; Override this if you set up an additional shortening mechanism (e.g. custom short domain)
short_url.url_pattern = {base_url}/{nbhd}/{project}/{mount_point}/{short_name}


;
; Settings for UserStats tool
;
userstats.count_lines_of_code = true


;
; Optional settings for profiling with https://pypi.python.org/pypi/keas.profile
;
[filter-app:profile]
use=egg:keas.profile#profiler
next=main


;
; setup for the taskd background daemon request controller
;
[app:task]
use = main
override_root = task ; TurboGears will use controllers/task.py as root controller



;
; Logging configuration
;
; Add additional loggers, handlers, formatters here
; Uses python's logging config file format
; https://docs.python.org/2/library/logging.config.html#configuration-file-format
;
[loggers]
keys = root, allura, sqlalchemy, paste, pylons, ew, taskdstatus, timermiddleware, tmw_details

[handlers]
keys = console, stats, taskdstatus, timermiddleware

[formatters]
keys = generic, stats, timermiddleware

; If you create additional loggers, add them as a key to [loggers]
[logger_root]
level = INFO
handlers = console, stats

[logger_allura]
level = INFO
handlers =
qualname = allura

[logger_sqlalchemy]
level = INFO
handlers =
qualname = sqlalchemy.engine
; "level = INFO" logs SQL queries.
; "level = DEBUG" logs SQL queries and results.
; "level = WARN" logs neither.  (Recommended for production systems.)

[logger_paste]
level = INFO
qualname = paste
handlers =

[logger_pylons]
level = INFO
qualname = pylons
handlers =

[logger_ew]
; easy widgets
level = WARN
qualname = ew
handlers =

[logger_tmw_details]
; DEBUG will include every instrumented call in our logging
level = INFO
qualname = timermiddleware
handlers =

[logger_taskdstatus]
level = INFO
qualname = taskdstatus
handlers = taskdstatus

[logger_timermiddleware]
level = INFO
handlers = timermiddleware
qualname = stats
propagate = 0

; If you create additional handlers, add them as a key to [handlers]
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[handler_stats]
class = allura.lib.utils.StatsHandler
args = ('rtstats.log', 'allura', 1)
level = NOTSET
formatter = stats

[handler_taskdstatus]
class = handlers.WatchedFileHandler
args = ('taskd_status.log', 'a')
level = NOTSET
formatter = generic

[handler_timermiddleware]
class = handlers.WatchedFileHandler
; if you run 'gunicorn' in allura/Allura/ then that's where this file will be
; you may want to hard-code a specific directory here.
args = ('stats.log', 'a')
level = NOTSET
formatter = timermiddleware

; If you create additional formatters, add them as a key to [formatters]
[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S

[formatter_stats]
format = %(asctime)s %(created)d %(kwpairs)s
datefmt = %d/%b/%Y:%H:%M:%S UTC

[formatter_timermiddleware]
format = {"time": "%(asctime)s,%(msecs)03d", "level": "%(levelname)-5.5s", "name": "%(name)s", "message": %(message)s}
datefmt = %Y-%m-%d %H:%M:%S
