Skip to main content

kn-defaults

Vision:

This project shall contains

  1. A Logging helper module in the form of Middleware, Decorator, and a helper function
  2. A Utility collection that can help with everyday tasks

Installation:

You can install via pip install django-kn-defaults

Components:

  1. Logging Helpers
  2. Checks
  3. CMS admin log signal handler

Usage:

1. Logging Usage

  • Add kn_defaults.logging to INSTALLED_APPS
  • Hook the logging configurations. (example below)

LOGGING setting Adjustments:

First, please make sure you add these values to your env variables

  • DJANGO_PROJECT_NAME (str)
  • DJANGO_PROJECT_ROOT (str)
  • DJANGO_LOGSTASH_HOST (str)
  • DJANGO_LOGSTASH_PORT (int)

Below env variables are optional

  • DJANGO_LOGSTASH_ENV: defaults to Dev
  • DJANGO_LOGSTASH_EXTRA_PREFIX: Defaults to dev
  • DJANGO_LOGSTASH_SSL_ENABLE: defaults to False

Then, You can integrate the kn BASE_LOGGING dict with your project LOGGING setting.

from kn_defaults.logging.defaults import BASE_LOGGING

BASE_LOGGING.update({
        # Your extra logging configurations goes here
        })

LOGGING = BASE_LOGGING

If you have a logging config already, you can merge it with BASE_LOGGING by hand. Check kn_defaults.logging.defaults for information

The package have 3 logging components

1. Middleware logging:

To use the logging middleware

  • Add 'kn_defaults.logging.middlewares.KnLogging' to your MIDDLEWARE
  • Mark your url names to be logged by the setting KN_LOGGING_URL_PATTERNS

The KN_LOGGING_URL_PATTERNS setting is a list of the url names to be logged by the middleware. This list can also accept a namespace url with an * to denote "log all urls under that namespace".

KN_LOGGING_URL_PATTERNS = [
    'url_name',
    'namespace:url_name',
    'namespace2:*'
]

The information being stored with the middleware logging

  1. request_id : a unique if of the request to help traceback any logs associated with that specific request
  2. method: GET/POST/ etc..
  3. path: the request.path (ie url) which originated the log
  4. ip
  5. user: the request.user if the user is authenticated, None otherwise.
  6. status_code: the response status code
  7. outbound_payload: The plain response the view sent back
  8. response_duration: How much time in seconds it took to generate a response back to the user
  9. post_parameters: the POST information. This respects Django's sensitive parameters decorator

2. Logging Helper function:

Sample usage looks like this

from kn_defaults.logging.defaults import log

log(level=10, msg='Message here')

The helper logging is ready for use out of the box and it logs the local variables in the calling function next to the log message.

For level names here is a map.

CRITICAL = 50
ERROR = 40
WARNING = 30
INFO = 20
DEBUG = 10

3. function decorator Logging Helper:

You can use it like this

from kn_defaults.logging.defaults import logging_decorator

@logging_decorator(level=10, msg='')
def function(arg_1=True, *args, **kwargs):
    pass

This decorator logs the function *args & **kwargs and the function return value

Settings:

  • KN_LOG_FILE_SIZE Control the log file size. Defaults to 5 MB.

  • KN_HANDLER_CLASS Controls the logging handler class, defaults to 'logging.handlers.RotatingFileHandler'

  • KN_LOG_FILE_PATH Controls where the log file would be stored. Defaults to os.path.join(os.getcwd(), 'log.log'))

  • KN_LOG_BACKUP_COUNT Controls the backup count for the default 'RotatingFileHandler'. Defaults to 3


2. Checks

The package do some sanity checks regarding the existence of the logging handlers needed.

It also checks that admin is not hooked to /admin/ url.

3. Helpers

  1. cms_plugin_change_admin_log logs django-cms plugins addition / update and delete to the regular admin log. In case of a change action, it logs the changed fields and their values before and after. It's automatically activated if 'cms' is in INSTALLED_APPS unless disabled by the setting DISABLE_CMS_PLUGIN_CHANGE_ADMIN_LOG

Creating a release

The package version is controlled by kn_defaults.init.version . and preparing the sdist is by python setup.py sdist

Metadata

Release files for django-kn-defaults 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-kn-defaults 0.3.2
File Size Uploaded Provenance
django-kn-defaults-0.3.2.tar.gz 13.0 kB Without provenance Details

Release files / django-kn-defaults-0.3.2.tar.gz

Download URL django-kn-defaults-0.3.2.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
8aae7e43cccb8f7a550a6ca5447057c281970b19cb58c500668de40d3983fb4d
BLAKE2b-256 checksum
How to use checksums
81d10001cb01d03eb8fb1fc9ad148729bedbb2acc5403f5cae365dfc516f10ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.8.3 readme-renderer/37.3 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.5 tqdm/4.64.1 importlib-metadata/4.6.4 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.6

Security for django-kn-defaults 0.3.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page