Module: WEBrick::AccessLog
| Relationships & Source Files | |
| Namespace Children | |
| 
       Exceptions: 
      
     | |
| Defined in: | lib/webrick/accesslog.rb | 
Overview
AccessLog provides logging to various files in various formats.
Multiple logs may be written to at the same time:
access_log = [
  [$stderr, WEBrick::AccessLog::COMMON_LOG_FORMAT],
  [$stderr, WEBrick::AccessLog::REFERER_LOG_FORMAT],
]
server = WEBrick::HTTPServer.new :AccessLog => access_log
Custom log formats may be defined.  AccessLog provides a subset of the formatting from Apache's mod_log_config httpd.apache.org/docs/mod/mod_log_config.html#formats.  See .setup_params for a list of supported options
Constant Summary
- 
    AGENT_LOG_FORMAT =
    # File 'lib/webrick/accesslog.rb', line 61
User-Agent Log Format
"%{User-Agent}i" - 
    CLF =
    # File 'lib/webrick/accesslog.rb', line 51
Short alias for Common Log Format
COMMON_LOG_FORMAT - 
    CLF_TIME_FORMAT =
    # File 'lib/webrick/accesslog.rb', line 41
The Common Log Format's time format
"[%d/%b/%Y:%H:%M:%S %Z]" - 
    COMBINED_LOG_FORMAT =
    # File 'lib/webrick/accesslog.rb', line 66
Combined Log Format
"#{CLF} \"%{Referer}i\" \"%{User-agent}i\"" - 
    COMMON_LOG_FORMAT =
    # File 'lib/webrick/accesslog.rb', line 46
Common Log Format
"%h %l %u %t \"%r\" %s %b" - 
    REFERER_LOG_FORMAT =
    # File 'lib/webrick/accesslog.rb', line 56
Referer Log Format
"%{Referer}i -> %U" 
Class Method Summary
- 
    
      .escape(data)  
    
    mod_func
    
Escapes control characters in
data - 
    
      .format(format_string, params)  
    
    mod_func
    
Formats
paramsaccording toformat_stringwhich is described in setup_params. - 
    
      .setup_params(config, req, res)  
    
    mod_func
    
This format specification is a subset of mod_log_config of Apache:
 
Class Method Details
.escape(data) (mod_func)
Escapes control characters in data
# File 'lib/webrick/accesslog.rb', line 151
def escape(data) if data.tainted? data.gsub(/[[:cntrl:]\\]+/) {$&.dump[1...-1]}.untaint else data end end
.format(format_string, params) (mod_func)
Formats params according to format_string which is described in setup_params.
# File 'lib/webrick/accesslog.rb', line 123
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 ?p case param when 'remote' escape(params["i"].peeraddr[1].to_s) else escape(params["p"].to_s) end when ?% "%" else escape(params[spec].to_s) end } end
.setup_params(config, req, res) (mod_func)
This format specification is a subset of mod_log_config of Apache:
- %a
 - 
Remote IP address
 - %b
 - 
Total response size
 - %e
variable - 
Given variable in ENV
 - %f
 - 
Response filename
 - %h
 - 
Remote host name
 - %
headeri - 
Given request header
 - %l
 - 
Remote logname, always “-”
 - %m
 - 
Request method
 - %
attrn - 
Given request attribute from
req.attributes - %
headero - 
Given response header
 - %p
 - 
Server's request port
 - %.formatp
 - 
The canonical port of the server serving the request or the actual port or the client's actual port. Valid formats are canonical, local or remote.
 - %q
 - 
Request query string
 - %r
 - 
First line of the request
 - %s
 - 
Request status
 - %t
 - 
Time the request was received
 - %T
 - 
Time taken to process the request
 - %u
 - 
Remote user from auth
 - %U
 - 
Unparsed URI
 - %%
 - 
Literal %
 
# File 'lib/webrick/accesslog.rb', line 95
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