4.3. Settings Logging

4.3.1. To Console

>>> 
... LOGGING = {
...     'version': 1,
...     'disable_existing_loggers': False,
...     'handlers': {
...         'console': {
...             'class': 'logging.StreamHandler',
...         },
...     },
...     'loggers': {
...         'django': {
...             'handlers': ['console'],
...             'level': 'INFO',
...             'propagate': True,
...         },
...     },
... }

4.3.2. To File

>>> 
... LOGGING = {
...     'version': 1,
...     'disable_existing_loggers': False,
...     'handlers': {
...         'file': {
...             'class': 'logging.FileHandler',
...             'filename': '/tmp/myproject.log',
...         },
...     },
...     'loggers': {
...         'django': {
...             'handlers': ['file'],
...             'level': 'INFO',
...             'propagate': True,
...         },
...     },
... }

4.3.3. Show SQL Queries

>>> 
... LOGGING = {
...     'version': 1,
...     'disable_existing_loggers': False,
...     'handlers': {
...         'console': {
...             'class': 'logging.StreamHandler',
...         },
...     },
...     'loggers': {
...         'django': {
...             'handlers': ['console'],
...             'level': 'INFO',
...             'propagate': True,
...         },
...         'django.db': {
...             'handlers': ['console'],
...             'level': 'DEBUG',
...             'propagate': True
...         },
...     },
... }

4.3.4. Default

>>> 
... LOGGING = {
...     'version': 1,
...     'disable_existing_loggers': False,
...     'filters': {
...         'require_debug_false': {
...             '()': 'django.utils.log.RequireDebugFalse',
...         },
...         'require_debug_true': {
...             '()': 'django.utils.log.RequireDebugTrue',
...         },
...     },
...     'formatters': {
...         'django.server': {
...             '()': 'django.utils.log.ServerFormatter',
...             'format': '[{server_time}] {message}',
...             'style': '{',
...         }
...     },
...     'handlers': {
...         'console': {
...             'level': 'INFO',
...             'filters': ['require_debug_true'],
...             'class': 'logging.StreamHandler',
...         },
...         'django.server': {
...             'level': 'INFO',
...             'class': 'logging.StreamHandler',
...             'formatter': 'django.server',
...         },
...         'mail_admins': {
...             'level': 'ERROR',
...             'filters': ['require_debug_false'],
...             'class': 'django.utils.log.AdminEmailHandler',
...         },
...     },
...     'loggers': {
...         'django': {
...             'handlers': ['console', 'mail_admins'],
...             'level': 'INFO',
...         },
...         'django.server': {
...             'handlers': ['django.server'],
...             'level': 'INFO',
...             'propagate': False,
...         },
...     },
... }

4.3.5. Use Case - 0x01

>>> 
... LOGGING = {
...     'version': 1,
...     'disable_existing_loggers': False,
...     'formatters': {
...         'standard': {
...             'datefmt': '%Y-%m-%d %H:%M:%S',
...             'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
...         },
...     },
...     'handlers': {
...         'console': {
...             'formatter': 'standard',
...             'class': 'logging.StreamHandler',
...         },
...     },
...     'loggers': {
...         '': {
...             'handlers': ['console'],
...             'level': 'INFO',
...             'propagate': True
...         },
...         'django.db': {
...             'handlers': ['console'],
...             'level': 'DEBUG',
...             'propagate': False
...         },
...         'django.request': {
...             'handlers': ['console'],
...             'level': 'WARN',
...             'propagate': False
...         },
...     }
... }

4.3.6. Use Case - 0x02

>>> 
... LOGGING = {
...     'version': 1,
...     'disable_existing_loggers': False,
...     'formatters': {
...         'simple': {
...             'format': '{levelname} {name} {message}',
...             'style': '{',
...         },
...     },
...     'handlers': {
...         'console': {
...             'class': 'logging.StreamHandler',
...             'formatter': 'simple',
...         },
...     },
...     'loggers': {
...         'django': {
...             'handlers': ['console'],
...             'level': os.getenv('DJANGO_LOG_LEVEL', default='DEBUG'),
...         },
...         'django.db.backends': {
...             'handlers': ['console'],
...             'level': os.getenv('DJANGO_LOG_LEVEL', default='DEBUG'),
...         },
...         'django.server': {
...             'handlers': ['console'],
...             'level': os.getenv('DJANGO_LOG_LEVEL', default='DEBUG'),
...         },
...         'django.request': {
...             'handlers': ['console'],
...             'level': os.getenv('DJANGO_LOG_LEVEL', default='DEBUG'),
...         },
...         'django.utils.security': {
...             'handlers': ['console'],
...             'level': os.getenv('DJANGO_LOG_LEVEL', default='DEBUG'),
...         },
...         'django.utils.autoreload': {
...             'handlers': ['console'],
...             'level': os.getenv('DJANGO_LOG_LEVEL', default='ERROR'),
...         },
...     },
... }

4.3.7. Use Case - 0x03

>>> 
... LOGGING = {
...     'version': 1,
...     'disable_existing_loggers': False,
...     'formatters': {
...         'verbose': {
...             'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
...             'style': '{',
...         },
...         'simple': {
...             'format': '{levelname} {message}',
...             'style': '{',
...         },
...     },
...     'filters': {
...         'special': {
...             '()': 'project.logging.SpecialFilter',
...             'foo': 'bar',
...         },
...         'require_debug_true': {
...             '()': 'django.utils.log.RequireDebugTrue',
...         },
...     },
...     'handlers': {
...         'console': {
...             'level': 'INFO',
...             'filters': ['require_debug_true'],
...             'class': 'logging.StreamHandler',
...             'formatter': 'simple',
...         },
...         'mail_admins': {
...             'level': 'ERROR',
...             'class': 'django.utils.log.AdminEmailHandler',
...             'filters': ['special'],
...         },
...     },
...     'loggers': {
...         'django': {
...             'handlers': ['console'],
...             'propagate': True,
...         },
...         'django.request': {
...             'handlers': ['mail_admins'],
...             'level': 'ERROR',
...             'propagate': False,
...         },
...         'myproject.custom': {
...             'handlers': ['console', 'mail_admins'],
...             'level': 'INFO',
...             'filters': ['special'],
...         },
...     },
... }