Class: Wsv::Server::AccessLog

Inherits:
Object
  • Object
show all
Defined in:
lib/wsv/server/access_log.rb

Overview

Emits one line per served request in Common Log Format. Concurrent Connection threads share a single AccessLog instance, so writes are serialized through a mutex to avoid interleaved bytes on @out.

Instance Method Summary collapse

Constructor Details

#initialize(out:) ⇒ AccessLog

Returns a new instance of AccessLog.



9
10
11
12
# File 'lib/wsv/server/access_log.rb', line 9

def initialize(out:)
  @out = out
  @mutex = Mutex.new
end

Instance Method Details

#record(remote_addr:, request:, status:, bytes:) ⇒ Object



14
15
16
17
18
19
# File 'lib/wsv/server/access_log.rb', line 14

def record(remote_addr:, request:, status:, bytes:)
  line = format_line(remote_addr, request, status, bytes)
  @mutex.synchronize { @out.puts(line) }
rescue IOError
  nil
end