The logging is coming from here: 
https://github.com/django/django/blob/43c471e81c27542e4dc392dfa2310c5a52db35d9/django/core/servers/basehttp.py#L103
 
where self.request is indeed a "socketobject"

I'm not sure if the WSGIRequest object is available at that point, so 
possibly this just needs a documentation clarification.

On Thursday, September 15, 2016 at 7:32:25 PM UTC-4, Ben Whale wrote:
>
> Well my last reply was preemptery.
>
> A minimal working example can be produced via the following commands. 
> First navigate to a suitable directory then,
> # virtualenv venv --no-site-packages
> # source venv/bin/activate
> # pip install django
> # django-admin startproject mwe
> # vim mwe/mwe/settings.y
>
> and then entering the following at the end of the settings.py file:
> LOGGING = {                                                               
>            
>     'version': 1,                                                         
>            
>     'disable_existing_loggers': False,                                     
>           
>     'formatters': {                                                       
>            
>         'django.server': {                                                 
>           
>             '()': 'django.utils.log.ServerFormatter',                     
>            
>             'format': '[%(server_time)s] %(message)s %(request)r',         
>           
>         }                                                                 
>            
>     },                                                                     
>           
>     'handlers': {                                                         
>            
>         'django.server': {                                                 
>           
>             'level': 'INFO',                                               
>           
>             'class': 'logging.StreamHandler',                             
>            
>             'formatter': 'django.server',                                 
>            
>         },                                                                 
>           
>     },                                                                     
>           
>     'loggers': {                                                           
>           
>         'django.server': {                                                 
>           
>             'handlers': ['django.server'],                                 
>           
>             'level': 'INFO',                                               
>           
>             'propagate': False,                                           
>            
>         },                                                                 
>           
>     }                                                                     
>            
> }
>
> Then :wq
> # cd mwe
> # python manage.py runserver
>
> Navigate to http://127.0.0.1:8000/blargh
>
> The normal error message about routing will show. Switch back to the 
> console and you'll see:
>
> # python manage.py runserver
> Performing system checks...
>
> System check identified no issues (0 silenced).
> September 15, 2016 - 23:12:05
> Django version 1.10.1, using settings 'mwe.settings'
> Starting development server at http://127.0.0.1:8000/
> Quit the server with CONTROL-C.
> Not Found: /blargh
> [15/Sep/2016 23:12:09] "GET /blargh HTTP/1.1" 404 1918 
> <socket._socketobject object at 0x7fa14d58da60>
>
> That representation of the socket object is being produced by the 
> "%(request)r" in the formatter.
>
> Chasing this back through the call stack the request object is set 
> in /usr/lib/python2.7/SocketServer.py(652)__init__() as the socket. This is 
> seems reasonable to me, so I guess some kind of processing of the request 
> isn't being performed somewhere.
>
>
> On Friday, 16 September 2016 08:16:09 UTC+10, Ben Whale wrote:
>>
>> Thanks for the reply Tim
>>
>> Some testing seems to indicate that it is an issue with 
>> django-rest-framework. When I contact the web server using urls managed by 
>> django rest the issues occurs, when I do the same via url managed by 
>> vanilla django the request variable in the context object is an instance of 
>> WSGIRequest, which is far more sensible.
>>
>> I'm doing to do some more digging today to prove this and, assuming I'm 
>> right, will pass the bug onto the django rest guys.
>>
>> Any hints on debugging this? I haven't entered the django code base much 
>> before.
>>
>> On Thursday, 15 September 2016 23:21:59 UTC+10, Tim Graham wrote:
>>>
>>> If true, it does seem like a bug. Could you provide a test for Django's 
>>> test suite or a sample project to reproduce it?
>>>
>>> On Thursday, September 15, 2016 at 6:53:55 AM UTC-4, Ben Whale wrote:
>>>>
>>>> Hi 
>>>>
>>>> What I'd like to do is log the request body whenever the django.request 
>>>> logger logs something. I had assumed that the extra context referred to as 
>>>> request in 
>>>> https://docs.djangoproject.com/en/1.10/topics/logging/#django-request 
>>>> was something like an HTTPRequest object. It is, however, an instance 
>>>> of socket._socketobject.
>>>>
>>>> Is it possible to get data for logging using the socket? For example 
>>>> the get parameters, the post data, any information associated to a file 
>>>> that was sent like what every has been read out of the socket? What about 
>>>> the request headers?
>>>>
>>>> Why is a socket passed to the logger? I must admit that I assume this 
>>>> to be a bug. The user has a very limited way of interacting with the 
>>>> socket 
>>>> via the string formatting syntax and the methods of the socket (as 
>>>> introspected via dir) don't lend them selves to this form of access.
>>>>
>>>> I'm currently using django 1.10 if that helps.
>>>>
>>>> Thanks for any help.
>>>>
>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/16350e3f-2aba-497c-98cb-b8becbcff546%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to