Module: WEBrick::AccessLog
- Defined in:
- lib/webrick/accesslog.rb
Defined Under Namespace
Classes: AccessLogError
Constant Summary collapse
- CLF_TIME_FORMAT =
"[%d/%b/%Y:%H:%M:%S %Z]"
- COMMON_LOG_FORMAT =
"%h %l %u %t \"%r\" %s %b"
- CLF =
COMMON_LOG_FORMAT
- REFERER_LOG_FORMAT =
"%{Referer}i -> %U"
- AGENT_LOG_FORMAT =
"%{User-Agent}i"
- COMBINED_LOG_FORMAT =
"#{CLF} \"%{Referer}i\" \"%{User-agent}i\""
Instance Method Summary collapse
- #escape(data) ⇒ Object
- #format(format_string, params) ⇒ Object
-
#setup_params(config, req, res) ⇒ Object
This format specification is a subset of mod_log_config of Apache.
Instance Method Details
#escape(data) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/webrick/accesslog.rb', line 67 def escape(data) if data.tainted? data.gsub(/[[:cntrl:]\\]+/) {$&.dump[1...-1]}.untaint else data end end |
#format(format_string, params) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/webrick/accesslog.rb', line 49 def format(format_string, params) format_string.gsub(/\%(?:\{(.*?)\})?>?([a-zA-Z%])/){ param, spec = $1, $2 case spec[0] when ?e, ?i, ?n, ?o raise AccessLogError, "parameter is required for \"#{spec}\"" unless param param = params[spec][param] ? escape(param) : "-" when ?t params[spec].strftime(param || CLF_TIME_FORMAT) when ?% "%" else escape(params[spec].to_s) end } end |
#setup_params(config, req, res) ⇒ Object
This format specification is a subset of mod_log_config of Apache.
http://httpd.apache.org/docs/mod/mod_log_config.html#formats
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/webrick/accesslog.rb', line 25 def setup_params(config, req, res) params = Hash.new("") params["a"] = req.peeraddr[3] params["b"] = res.sent_size params["e"] = ENV params["f"] = res.filename || "" params["h"] = req.peeraddr[2] params["i"] = req params["l"] = "-" params["m"] = req.request_method params["n"] = req.attributes params["o"] = res params["p"] = req.port params["q"] = req.query_string params["r"] = req.request_line.sub(/\x0d?\x0a\z/o, '') params["s"] = res.status # won't support "%>s" params["t"] = req.request_time params["T"] = Time.now - req.request_time params["u"] = req.user || "-" params["U"] = req.unparsed_uri params["v"] = config[:ServerName] params end |