Skip to content

stopdesign/django-structured-log

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Structured log for Django in Google Cloud Run

Usage example

Add structured_log to INSTALLED_APPS

INSTALLED_APPS = [
    ...
    "structured_log",
    ...
]

Update logging settings

Add filter, formater and handler. Use handler for logging.

"filters": {
    "request_info": {
        "()": "structured_log.filters.RequestInfoFilter"
    }
},
"formatters": {
    "cloudrun": {
        "()": "structured_log.formaters.GoogleCloudFormatter"
    },
},
"handlers": {
    "console": {
        "level": "DEBUG",
        "class": "logging.StreamHandler",
        "stream": sys.stdout,
        "formatter": "cloudrun",
        "filters": ["request_info"],
    },
},
"loggers": {
    "": {
        "level": "INFO",
        "handlers": ["console"],
        "propagate": False
    },
    "django": {
        "level": "INFO",
        "handlers": ["console"],
        "propagate": False
    },
    ...
}

[OPTIONAL] Human-readable logs in local environment

You can use another log formater for your local environment:

from .settings import DEBUG
if DEBUG:
    log_formatter = "color_console"
else:
    log_formatter = "cloudrun"
"handlers": {
    "console": {
        "level": "DEBUG",
        "class": "logging.StreamHandler",
        "stream": sys.stdout,
        "formatter": log_formatter,
        "filters": ["request_info"],
    },
},

WSGIHandler

Replace get_wsgi_application import in wsgi.py.

import os

from structured_log import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")

application = WSGIHandler()

[OPTIONAL] Client IP address

Use django-xff to set HTTP_REMOTE_ADDR from X-Forwarded-For header.

MIDDLEWARE = [
    "xff.middleware.XForwardedForMiddleware",
    ...
]

# Only one proxy for Cloud Run
XFF_TRUSTED_PROXY_DEPTH = 1

About

Google Cloud structured log formater for Django

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages