frinklog.frink

View or download frinklog.frink in plain text format


// Digest my webserver log and find calculations that were made by Frink.
// I use this to improve calculations, provide hints, and remove common
// sources of misunderstandings in calculations.

logfile = "file:///var/log/httpd/ssl_access_log"

// Apache logfile date format
### dd/MMM/yyyy:HH:mm:ss ###

for line = lines[logfile]
{
   if [ip, x1, x2, date, req, res, bytes, ref, browser] = line =~ %r/
     ^
     (\S+)
      \s+
     (\S+)
      \s+
     (\S+)
      \s+
     \[(.*?)\]
      \s+
     "(.*?)"
      \s+
     \d+
      \s+
     (\d+|-)
      \s+
     "(.*?)"
      \s+
     "(.*?)"
             /x
   {
      if [method, URL, ver] = req =~ %r/^(\S+)\s+(\S+)\s+(.*)/
      {
         [path, query] = URL =~ %r/([^?]*)\??(.*)/

         if ! (path =~ %r/frink.fsp/)
            next

         if query
         {
            argPairs = split[%r/&/, query]
            for arg = argPairs
            {
               [name, value] = arg =~ %r/(.*?)=(.*)/
               if (value)
               {
                  value =~ %s/\+/ /g
                  value =~ %s/%([0-9a-fA-F]{2})/char[parseInt[$1,16]]/ge
                  println[value]
               }
            }
         }
      } //else
//      println["Bad request: $req"]
      
   } //else
//      println["Unmatched: $line"] 
}


View or download frinklog.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17781 days, 22 hours, 11 minutes ago.