Class: Wsv::Server::AccessLog
- Inherits:
-
Object
- Object
- Wsv::Server::AccessLog
- 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
-
#initialize(out:) ⇒ AccessLog
constructor
A new instance of AccessLog.
- #record(remote_addr:, request:, status:, bytes:) ⇒ Object
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 |