Django app to have an ability to set custom context in a main application
Project description
## django-context
#### `django-context` is an BSD licensed library written in Python. It could be helpful for you if you wanna set some custom context in your django app. The one of the examples is add an extra info into your logging records. Also, you can use a request object in any place of an application cause this library provides a capability to reach it out at any time during a request.
### Quick start
1 install the library:
```bash
pip install django-context
```
2 Add `django-context` to your INSTALLED_APPS setting like this:
```Python
INSTALLED_APPS = [
...
django_context,
]
```
3 Add proxy middleware to your MIDDLEWARE setting like this:
```Python
MIDDLEWARE = [
'django_context.middleware.ProxyMiddleware',
...
]
```
It's important to place this `ProxyMiddleware` at the first place in a `MIDDLEWARE` to allow to calculate duration of response more precisely.
4 If you just want to add info about request duration and request id to your log records then you can use `GlobalWSGIMiddleware` in your `wsgi.py` like this:
```Python
application = GlobalWSGIMiddleware(get_wsgi_application())
```
5 Use this example of logging setting to set up your loggers correctly
```Python
LOGGING = {
'version': 1,
'formatters': {
'verbose': {
'format': ('[django] %(levelname)s %(asctime)s'
' %(name)s/%(module)s'
' %(process)d/%(thread)d'
' request_id: %(request_id)s'
' user_id: %(user_id)s'
' duration: %(response_duration)s'
' %(message)s')
},
},
'filters': {
'context_filter': {
'()': 'django_context.logging.ContextFilter'
}
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
'filters': ['context_filter']
}
},
'loggers': {
'django_context': {
'level': 'INFO',
'handlers': ['console'],
'propagate': True,
},
'django': {
'level': 'INFO',
'handlers': ['console'],
'propagate': True,
},
}
}
```
### Log records example
<img src="./pictures/log_records_example.png" width="1200" height="130">
#### `django-context` is an BSD licensed library written in Python. It could be helpful for you if you wanna set some custom context in your django app. The one of the examples is add an extra info into your logging records. Also, you can use a request object in any place of an application cause this library provides a capability to reach it out at any time during a request.
### Quick start
1 install the library:
```bash
pip install django-context
```
2 Add `django-context` to your INSTALLED_APPS setting like this:
```Python
INSTALLED_APPS = [
...
django_context,
]
```
3 Add proxy middleware to your MIDDLEWARE setting like this:
```Python
MIDDLEWARE = [
'django_context.middleware.ProxyMiddleware',
...
]
```
It's important to place this `ProxyMiddleware` at the first place in a `MIDDLEWARE` to allow to calculate duration of response more precisely.
4 If you just want to add info about request duration and request id to your log records then you can use `GlobalWSGIMiddleware` in your `wsgi.py` like this:
```Python
application = GlobalWSGIMiddleware(get_wsgi_application())
```
5 Use this example of logging setting to set up your loggers correctly
```Python
LOGGING = {
'version': 1,
'formatters': {
'verbose': {
'format': ('[django] %(levelname)s %(asctime)s'
' %(name)s/%(module)s'
' %(process)d/%(thread)d'
' request_id: %(request_id)s'
' user_id: %(user_id)s'
' duration: %(response_duration)s'
' %(message)s')
},
},
'filters': {
'context_filter': {
'()': 'django_context.logging.ContextFilter'
}
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
'filters': ['context_filter']
}
},
'loggers': {
'django_context': {
'level': 'INFO',
'handlers': ['console'],
'propagate': True,
},
'django': {
'level': 'INFO',
'handlers': ['console'],
'propagate': True,
},
}
}
```
### Log records example
<img src="./pictures/log_records_example.png" width="1200" height="130">
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-context-0.1.1.tar.gz
(5.1 kB
view details)
File details
Details for the file django-context-0.1.1.tar.gz
.
File metadata
- Download URL: django-context-0.1.1.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54a47e3cb07dc1f71ac3e28e8c088f0f2bee8eb12f25e1e55d1c792701183eb1 |
|
MD5 | 6ac48a3af462dca6a0869226638c135d |
|
BLAKE2b-256 | 212e685e3c9daf9747a756716b11c5b12c5c27aae726a39904984cc20403e139 |