1. cherrypy
  2. CherryPy
Issue #450 resolved

Add referers and other info in the logs

Anonymous created an issue

Some people have requested the possibility to add more informations to the logs, such as Referers.

It seems that as long as we keep the first part of each line in the logs as respecting CLF we won't have issues in adding those information.

Reported by lawouach

Comments (7)

  1. Anonymous

    it would be nice if it was changed to Combined Log Format instead of CFL. Combined Log Format is CFL + Referer and User-Agent HTTP request header.

  2. Christian Wyglendowski

    Could access logging be moved to a filter? If so, the filter could have options like:

    access_log_filter.on = True
    access_log_filter.format = "common" # or "combined" or "custom" or ...
    access_log_filter.file = "/path/to/access.log"
    

    I suppose some clear way of creating custom formats would be needed too.

    Just some thoughts ... for now :-)

  3. Anonymous

    I think supporting Combined Log Format is more importent than having it in a filter and being able to do custome logs. I'll attach a small patch to make the logs Combined.

    Index: cherrypy/_cputil.py
    ===================================================================
    --- cherrypy/_cputil.py (revision 955)
    +++ cherrypy/_cputil.py (working copy)
    @@ -108,7 +108,7 @@
     def _cp_log_access():
         """ Default method for logging access """
         
    -    tmpl = '%(h)s %(l)s %(u)s [%(t)s] "%(r)s" %(s)s %(b)s'
    +    tmpl = '%(h)s %(l)s %(u)s [%(t)s] "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'
         s = tmpl % {'h': cherrypy.request.remoteHost,
                     'l': '-',
                     'u': getattr(cherrypy.request, "login", None) or "-",
    @@ -116,6 +116,8 @@
                     'r': cherrypy.request.requestLine,
                     's': cherrypy.response.status.split(" ", 1)[0],
                     'b': cherrypy.response.headers.get('Content-Length', '') or "-",
    +                'f': cherrypy.request.headers.get('referer'),
    +                'a': cherrypy.request.headers.get('user-agent'),
                     }
         
         if cherrypy.config.get('server.log_to_screen', True):
    
  4. Log in to comment