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