I really love it so much, here is your working example! Seriously, this is awesome!
Start by placing this in settings.py
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", 'datefmt' : "%d/%b/%Y %H:%M:%S" }, }, 'handlers': { 'null': { 'level':'DEBUG', 'class':'django.utils.log.NullHandler', }, 'logfile': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': SITE_ROOT + "/logfile", 'maxBytes': 50000, 'backupCount': 2, 'formatter': 'standard', }, 'console':{ 'level':'INFO', 'class':'logging.StreamHandler', 'formatter': 'standard' }, }, 'loggers': { 'django': { 'handlers':['console'], 'propagate': True, 'level':'WARN', }, 'django.db.backends': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': False, }, 'MYAPP': { 'handlers': ['console', 'logfile'], 'level': 'DEBUG', }, } }
Now what does that mean?
- Formatters I like that he comes out in the same style as. /manage.py runningerver
- Handlers. I want two logs - a debug text file and an information console. This allows me to really dig around (if necessary) and watch a text file to see what is happening under the hood.
- Loggers is where we nail what we want to record. In general, django gets WARN and higher β an exception (hence a redistributable) βthis is the backends where I like to see SQL calls, since they can go crazy .. My last application: I have two handlers and click on it all.
Now how do I enable the use of MYAPP ...
In the documentation, put this at the top of your files (views.py) ..
import logging log = logging.getLogger(__name__)
Then, to do something, do it.
log.debug("Hey there it works!!") log.info("Hey there it works!!") log.warn("Hey there it works!!") log.error("Hey there it works!!")
Log levels are explained here and for pure python here .