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 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: params[spec][param] || "-" 57: when ?t 58: params[spec].strftime(param || CLF_TIME_FORMAT) 59: when ?% 60: "%" 61: else 62: params[spec] 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