Django log format app name and function and saved into file


This is quick configuration for Django logger to log with application name followed with function, and store them into log files.

1. Edit logger settings
settings.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import os
CURRENT = os.path.dirname( __file__ )

LOGGING = {
    ‘version’: 1,
    ‘disable_existing_loggers’: False,
    ‘filters’: {
        ‘require_debug_false’: {
            ‘()’: ‘django.utils.log.RequireDebugFalse’
        }
    },
    ‘formatters’: {
        ‘verbose’: {
            ‘format’: ‘%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s’
        },
        ‘semi_verbose’: {
            ‘format’: ‘[%(levelname)s] %(module)s %(name)s %(funcName)s(): %(message)s’
        },
        ‘simple’: {
            ‘format’: ‘%(levelname)s %(message)s’
        },
    },
    ‘handlers’: {
        ‘mail_admins’: {
            ‘level’: ‘ERROR’,
            ‘filters’: [‘require_debug_false’],
            ‘class’: ‘django.utils.log.AdminEmailHandler’
        },
        ‘logfile’: {
            ‘level’:’DEBUG’,
            ‘class’:’logging.handlers.RotatingFileHandler’,
            ‘filename’: os.path.abspath(os.path.join(CURRENT, "..", "logs",
                                                     "server")),
            ‘maxBytes’: 50000,
            ‘backupCount’: 2,
            ‘formatter’: ‘semi_verbose’,
        },
        ‘console’:{
            ‘level’:’INFO’,
            ‘class’:’logging.StreamHandler’,
            ‘formatter’: ‘simple’
        },
    },
    ‘loggers’: {
        ‘django.request’: {
            ‘handlers’: [‘mail_admins’, ‘console’],
            ‘level’: ‘ERROR’,
            ‘propagate’: True,
        },
        ‘django’: {
            ‘handlers’:[‘console’],
            ‘propagate’: True,
            ‘level’:’WARN’,
        },
        ‘django.db.backends’: {
            ‘handlers’: [‘console’],
            ‘level’: ‘DEBUG’,
            ‘propagate’: False,
        },
        ‘myapp’: {
            ‘handlers’: [‘console’, ‘logfile’],
            ‘level’: ‘DEBUG’,
        },
    }
}


2. Create “logs” folder into your project root folder.

3. Start using Logger

1
2
3
4
import logging
log = logging.getLogger("myapp")

log.info("Hello world!")

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.