On 11/19/2011 10:26 PM, Gelonida N wrote:
> On 09/05/2011 12:58 AM, Gelonida N wrote:
>>
>> Im am debugging a django application.
>>
>> If I set  DEBUG=True
>> then I can see error messages on the browser.
>>
>> Is there any way to see the same error messages in the server log file?


> I am using Django 1.3
> I configured logging and set up a root logger with  log level 'DEBUG'
> 
> I added one log command and one explicit error in the urls.py file.
> I can see the error report in the browser but not in my log files.
> 

The only way, that was working for me was connecting myself to the
got_request_exception signal of the django framework.

so what I do now is:

import sys
import traceback
from django.dispatch import receiver
from django.core.signals import got_request_exception

import logging
logger = logging.getLogger('exceptionlogger')

@receiver(got_request_exception)
def got_request_exception_hndlr(signal, **kwargs):
        request = kwargs.get('request')
        meta = request.META
        logger.error("ReqException %s %s" %
            (meta['REMOTE_ADDR'], request.path ))
        ex_type, ex_value, _e_b = sys.exc_info()
        logger.error(traceback.format_exc())

This code has of course to be imported as soon as possible in order to
catch as many exceptions as possible.

What would be the correct place for it?

- First line of urls.py?
- import it as dummy middleware?

> 
> 
> How to reproduce my problem:
> 
> # create a new django project
> #----------------------------
> django-admin.py startproject logproblem
> 
> # enter your project directory
> # -----------------------------
> cd logproblem
> 
> # create a urls.py which prints a log message
> # and which causes an error afterwards
> # file contents as in the next four lines
> #------------------------------------------
> 
> # faulty urls.py file
> import logging
> logging.debug("hello")
> 1/0 # this will raise a ZeroDivisionError
> 
> 
> # Now edit settings.py and change the LOGGING section to:
> ---------------------------------------------------------
> LOGGING = {
>     'version': 1,
>     'disable_existing_loggers': False,
>     'handlers': {
>         'console': {
>             'level': 'DEBUG',
>             'class': 'logging.StreamHandler'
>         }
>     },
>     'loggers': {
>         '': {
>             'handlers': ['console'],
>             'level': 'DEBUG',
>             'propagate': True,
>         },
>     }
> }
> 
> # Now run the server
> # ----------------------
> ./manage.py runserver
> 
> 
> The result on the console will only be:
>> Quit the server with CONTROL-C.
>> hello
>> [19/Nov/2011 15:18:32] "GET / HTTP/1.1" 500 79664
> 
> On the browser however I see the division by 0 error and the back trace.
> 
> For debugging of errors which are caused by a remote host I would really
> like to see  such kind of errors in the server logs or an any other log.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 


-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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.

Reply via email to