Logging Config#

You can modify the logging configuration through .env` settings files.

All environments share the same logging file ENV Variable Name with a prefix. For example DJANGO_LOGGING_LEVEL for the local environment would be LOCAL_DJANGO_LOGGING_LEVEL

Sharing a common ENV Variable Name with a prefix allows greater control over logging.

Rotating Log Files#

django-cookiecutter uses Rotating Logs to prevent log file size from growing too large. The default settings, see below, are located in config/settings/base.py.

The backupCount setting allows up to five log files before it starts removing them.

The maxBytes setting is the maximum size a file can be before it is closed and rotated to a new file.

 1"rotated_logs": {
 2    "class": "logging.handlers.RotatingFileHandler",
 3    "filename": DJANGO_LOG_FILE,
 4    "level": DJANGO_LOGGING_LEVEL,
 5    "mode": "a",
 6    "encoding": "utf-8",
 7    "formatter": "verbose",
 8    "backupCount": 5,
 9    "maxBytes": 10485760,
10},

Local#

See the local environment configuration file below.

1 my-django-project
2     └── .env
3         ├── .local
4         ├── .production
5         ├── .staging
6         └── .testing
 1# Local Environment ENV Keys
 2
 3# Local Environment Django
 4LOCAL_ALLOWED_HOSTS=localhost,0.0.0.0,127.0.0.1,testserver
 5# Local database options: sqlite3, other.
 6# If using other, a LOCAL_DATABASE_URL connection string must be supplied.
 7LOCAL_DJANGO_DATABASE=sqlite3
 8LOCAL_DATABASE_URL=""
 9LOCAL_DJANGO_DEBUG=True
10LOCAL_DJANGO_INTERNAL_IPS=127.0.0.1,10.0.2.2
11LOCAL_DJANGO_LOG_FILE='logging/rotating.log'
12LOCAL_DJANGO_LOGGING_LEVEL='DEBUG'
13LOCAL_DJANGO_LOGGING_MAIL_ADMINS='ERROR'
14# For the docker image
15LOCAL_DJANGO_MANAGEPY_MIGRATE=on
16LOCAL_DJANGO_SECRET_KEY='!!!DODGY_LOCAL_SECRET!!!'
17LOCAL_DJANGO_SETTINGS_MODULE='config.settings.local'
18LOCAL_DJANGO_TEMPLATES_CSS="/static/css/styles.css"
19LOCAL_MEDIA_URL='media-lo/'
20LOCAL_STATIC_URL='static-lo/'
21# static options are Local or S3
22LOCAL_USE_STATIC='Local'
23LOCAL_TAILWIND_CSS_DEV=True
24
25# Local Environment S3 access
26LOCAL_AWS_ACCESS_KEY_ID=""
27# If using the default leave ENDPOINT_URL unset
28LOCAL_AWS_S3_ENDPOINT_URL=""
29# If using the default leave AWS_LOCATION unset
30LOCAL_AWS_LOCATION=""
31LOCAL_AWS_SECRET_ACCESS_KEY=""
32LOCAL_AWS_S3_REGION_NAME=""
33LOCAL_AWS_S3_OBJECT_PARAMETERS=""
34LOCAL_AWS_STORAGE_BUCKET_NAME=""
35
36# Local Environment Email Settings
37LOCAL_EMAIL_BACKEND="django.core.mail.backends.console.EmailBackend"
38LOCAL_EMAIL_HOST=""
39LOCAL_EMAIL_PORT=""
40LOCAL_EMAIL_HOST_USER=""
41LOCAL_EMAIL_HOST_PASSWORD=""
42LOCAL_EMAIL_USE_TLS=""

Staging and Production#

Staging and Production environments add the environment prefix to the ENV Variable to differentiate between the two environments.

See the production file below, showing the addition of the _PRODUCTION suffix, and specifying the production logging file location.

1 my-django-project
2     └── .env
3         ├── .local
4         ├── .production
5         ├── .staging
6         └── .testing
 1# Production Environment ENV Keys
 2
 3# Production Environment Django
 4PROD_ALLOWED_HOSTS=''
 5PROD_DATABASE_URL=''
 6PROD_DB_API_KEY=''
 7PROD_DJANGO_DEBUG=False
 8PROD_DJANGO_INTERNAL_IPS=[]
 9PROD_DJANGO_LOG_FILE='logging/rotating.log'
10PROD_DJANGO_LOGGING_LEVEL='INFO'
11PROD_DJANGO_LOGGING_MAIL_ADMINS='ERROR'
12# For the docker image
13PROD_DJANGO_MANAGEPY_MIGRATE=on
14PROD_DJANGO_SECRET_KEY=='!!!INSECURE_PRODUCTION_SECRET!!!'
15PROD_DJANGO_SETTINGS_MODULE='config.settings.production'
16PROD_DJANGO_TEMPLATES_CSS=''
17PROD_MEDIA_URL='media-'
18PROD_STATIC_URL='static/'
19# static options are local or S3
20PROD_USE_STATIC='S3'
21PROD_TAILWIND_CSS_DEV=False
22
23# Production Environment S3 access
24PROD_AWS_ACCESS_KEY_ID=''
25# If using the default leave ENDPOINT_URL unset
26PROD_AWS_S3_ENDPOINT_URL=''
27# If using the default leave AWS_LOCATION unset
28PROD_AWS_LOCATION=''
29PROD_AWS_SECRET_ACCESS_KEY=''
30PROD_AWS_S3_REGION_NAME=''
31PROD_AWS_S3_OBJECT_PARAMETERS=''
32PROD_AWS_STORAGE_BUCKET_NAME=''
33
34# Production Environment Email Settings
35PROD_EMAIL_BACKEND=''
36PROD_EMAIL_HOST=''
37PROD_EMAIL_PORT=''
38PROD_EMAIL_HOST_USER=''
39PROD_EMAIL_HOST_PASSWORD=''
40PROD_EMAIL_USE_TLS=''

Email Admins#

By default, Sending emails to admins is set to ERROR for all environments.

You can change what logging level the Admins will receive an email with the email admins variable; see production settings file extract below.

1PROD_DJANGO_LOG_FILE='logging/rotating.log'
2PROD_DJANGO_LOGGING_LEVEL='INFO'
3PROD_DJANGO_LOGGING_MAIL_ADMINS='ERROR'