On 6 oct, 16:42, Fred <frse...@adventistcare.org> wrote: > My django app is working great with Debug=True. But now I'm in > production and I want to email exceptions to me
That's the default behaviour if you correctly filled the relevant parts of your settings.py (that is, mainly, the ADMINS, and all the SMTP_xxx parts if your smtp server requires it). > and print them to my > logfile. This requires a bit more work. > I've been googling and searching the docs for the last 2 > hours ??? http://docs.djangoproject.com/en/dev/topics/http/middleware/#writing-your-own-middleware http://docs.djangoproject.com/en/dev/topics/http/middleware/#activating-middleware 1/ create a python module somewhere in your python path (ie : in your project dir or in one of your apps) 2/ in that module, define a class with at least one of 'process_request', 'process_response' or 'process_exception' methods (more details in the FineManual) 3/ in your settings.py, add the full qualified name (ie : 'yourapp.yourmodule.youclass') to the MIDDLEWARE_CLASSES entry Which of these points do you have probems with ? > and what I really need is a snippet that shows how to do it in > middleware/settings.py. > I've never defined my own middleware and I'm > just treading water. I've combined everything into my settings.py > file to make it easier to explain, even if that may be bad design for > now. It's not "bad design", it just won't work. > Here's as far as I've gotten; which just times out on even valid > requests: > > ---------------------------- > settings.py--------------------------------------------------------------- > partial > > def init_logging(): > formatter = logging.Formatter("%(asctime)s - %(name)s - % > (levelname)s - %(message)s") > filelogger = logging.getLogger() > filehandler = logging.FileHandler(LOGFILEPATH) > filelogger.setLevel(logging.DEBUG) > filehandler.setFormatter(formatter) > filelogger.addHandler(filehandler) > > logInitDone=False > if not logInitDone: > logInitDone = True > init_logging() > > logger = logging.getLogger("settings") #verified this logger does > work. > > def process_exception(self, request, exception): > logger.debug(str(request)) > logger.debug(str(exception)) > return None All The above has nothing to do in the settings. You need to define a middleware *class* in a distinct module and make 'process_exception' a method of this class. > MIDDLEWARE_CLASSES = ( > 'process_exception', #if I comment this out, system works, with > it in response hangs even without error this should be something like 'yourmiddlewaremodulename.yourmiddlewareclassname' > 'django.middleware.common.CommonMiddleware', > 'django.contrib.sessions.middleware.SessionMiddleware', > # 'django.middleware.csrf.CsrfViewMiddleware', > # 'django.contrib.auth.middleware.AuthenticationMiddleware', > 'django.contrib.messages.middleware.MessageMiddleware', > ) -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.