Add referers and other info in the logs

Anonymous avatarAnonymous 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
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.