---
myst:
html_meta:
"description": ""
"property=og:description": ""
"property=og:title": ""
"keywords": ""
---
# Understanding the contents of `wsgi.ini`
The file `wsgi.ini` references the `zope.conf` file, `zope.conf` is passed as an argument to the WSGI application defined by the Zope package.
WSGI server configuration.
```ini
[server:main]
paste.server_factory = plone.recipe.zope2instance:main
use = egg:plone.recipe.zope2instance#main
listen = 0.0.0.0:8080
threads = 4
```
WSGI application configuration
```ini
[app:zope]
use = egg:Zope#main
zope_conf = /home/thomas/devel/plone/minimal52/parts/instance/etc/zope.conf
```
Paste Deploy's filters are a powerful concept for non-intrusively glueing middleware/infrastructure components together.
```ini
[filter:translogger]
use = egg:Paste#translogger
setup_console_handler = False
[filter:sentry]
use = egg:plone.recipe.zope2instance#sentry
dsn = https://3cfa2cdda6614de9966ce008416cae00@sentry.io/1537247
level = DEBUG
event_level = WARNING
ignorelist = waitress.queue
```
Applications and filters are combined in pipelines.
```ini
[pipeline:main]
pipeline =
translogger
egg:Zope#httpexceptions
sentry
zope
```
Following the pipeline section up to the end of the file is the logging configuration.
The logging configuration is passed to the standard libraries `logging.config` module and follows the [configuration file format described in the Python documentation](https://docs.python.org/3/library/logging.config.html#configuration-file-format).
The `handler_accesslog` and `handler_eventlog` sections configure the instance access and event log files, respectively.
```ini
[loggers]
keys = root, plone, waitress.queue, waitress, wsgi
[handlers]
keys = console, accesslog, eventlog
[formatters]
keys = generic, message
[logger_root]
level = INFO
handlers = console, eventlog
[logger_plone]
level = INFO
handlers = eventlog
qualname = plone
[logger_waitress.queue]
level = INFO
handlers = eventlog
qualname = waitress.queue
propagate = 0
[logger_waitress]
level = INFO
handlers = eventlog
qualname = waitress
[logger_wsgi]
level = INFO
handlers = accesslog
qualname = wsgi
propagate = 0
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[handler_accesslog]
class = FileHandler
args = ('/home/thomas/devel/plone/minimal52/var/log/instance-access.log','a')
level = INFO
formatter = message
[handler_eventlog]
class = FileHandler
args = ('/home/thomas/devel/plone/minimal52/var/log/instance.log', 'a')
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-7.7s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
[formatter_message]
format = %(message)s
```
## The WSGI pipeline
-