def call!(env)
      log "===== Received request ====="
      Rack::Request.new(env).tap do |request|
        log "  Method:  #{request.request_method.inspect}"
        log "  Path:    #{request.path.inspect}"
      end
      env['deas.logging'] = Proc.new{ |msg| log(msg) }
      status, headers, body = super(env)
      log "  Redir:   #{headers['Location']}" if headers.key?('Location')
      log "===== Completed in #{env['deas.time_taken']}ms (#{response_display(status)}) ====="
      [status, headers, body]
    end
def call!(env)
      log "===== Received request ====="
      Rack::Request.new(env).tap do |request|
        log "  Method:  #{request.request_method.inspect}"
        log "  Path:    #{request.path.inspect}"
      end
      env['deas.logging'] = Proc.new{ |msg| log(msg) }
      status, headers, body = super(env)
      log "  Redir:   #{headers['Location']}" if headers.key?('Location')
      log "===== Completed in #{env['deas.time_taken']}ms (#{response_display(status)}) ====="
      [status, headers, body]
    end
This the real Rack call interface. It adds logging before and after
 super-ing to the common logging behavior.