==================
Configuring Paster
==================

The server is launched using Paster Deploy, which reads an ini-like file 
that defines among other things:

- where the wsgi application is located
- where the application configuration is located
- the logging configuration
- etc.


DEFAULT
=======

The default section defines four optional values (all are set to False by 
default):

1. **debug**: if set to True, will activate the debug mode.
2. **client_debug**: if set to True, will return in the body of the response 
   any traceback when a 500 occurs.
3. **translogger**: will display in the stdout all requests made on the server.
4. **profile**: will activate a profiler and generate cachegrind infos.

Example::

    [DEFAULT]
    debug = True
    translogger = False
    profile = False


server:main
===========

Defines the web server to use to run the app with Paster. See Paster 
documentation for more info.

Example::

    [server:main]
    use = egg:Paste#http
    host = 0.0.0.0
    port = 5000
    use_threadpool = True
    threadpool_workers = 60

app:main
========

Defines the server entry point. See Paster documentation for more info.

**configuration** can point to a configuration file for the server. It uses a *file:* prefix. 

Example::

    [app:main]
    use = egg:SyncServer
    configuration = file:%(here)s/etc/sync.conf

logging
=======

Logging is done using the logging configuration. See Python's logging 
documentation for more details.

The Sync server uses the **syncserver** logger everywhere.

In the following example, all Sync errors are logged in a specific file 
as long as **DEFAULT:debug** is activated. Other logs are in 
a separate file.::

    [loggers]
    keys = root,syncserver

    [handlers]
    keys = global,errors

    [formatters]
    keys = generic

    [logger_root]
    level = WARNING
    handlers = global

    [logger_syncserver]
    qualname = syncserver
    level = INFO
    handlers = global, errors
    propagate = 0

    [handler_global]
    class = handlers.RotatingFileHandler
    args = ('/var/log/sync.log',)
    level = DEBUG
    formatter = generic

    [handler_errors]
    class = handlers.RotatingFileHandler
    args = ('/var/log/sync-error.log',)
    level = ERROR
    formatter = generic

    [formatter_generic]
    format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
    datefmt = %Y-%m-%d %H:%M:%S

