Created
October 14, 2013 18:45
-
-
Save Xeus/6980137 to your computer and use it in GitHub Desktop.
Django & Python logging
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// via rh0dium @ http://stackoverflow.com/questions/5739830/simple-log-to-file-example-for-django-1-3 | |
// I truly love this so much here is your working example! Seriously this is awesome! | |
// | |
// Start by putting this in your 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 all of this mean? | |
Formaters I like it to come out as the same style as ./manage.py runserver | |
Handlers - I want two logs - a debug text file, and an info console. This allows me to really dig in (if needed) and look at a text file to see what happens under the hood. | |
Loggers - Here is where we nail down what we want to log. In general django gets WARN and above - the exception (hence propagate) is the backends where I love to see the SQL calls since they can get crazy.. Last is my app were I have two handlers and push everything to it. | |
Now how do I enable MYAPP to use it... | |
Per the documentation put this at the top of your files (views.py).. | |
*/ | |
import logging | |
log = logging.getLogger(__name__) | |
// Then to get something out do this. | |
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. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment