diff options
Diffstat (limited to 'lib/nickserver/reel_server.rb')
-rw-r--r-- | lib/nickserver/reel_server.rb | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/lib/nickserver/reel_server.rb b/lib/nickserver/reel_server.rb index d2a95ba..c378aca 100644 --- a/lib/nickserver/reel_server.rb +++ b/lib/nickserver/reel_server.rb @@ -1,8 +1,11 @@ silence_warnings do require 'reel' end +require 'logger' +require 'nickserver/config' require 'nickserver/adapters/celluloid_http' require 'nickserver/dispatcher' +require 'nickserver/logging_responder' module Nickserver class ReelServer < Reel::Server::HTTP @@ -12,6 +15,7 @@ module Nickserver end def initialize(host = "127.0.0.1", port = 3000) + Celluloid.logger = logger super(host, port, &method(:on_connection)) end @@ -23,17 +27,28 @@ module Nickserver def on_connection(connection) connection.each_request do |request| - handler = handler_for(request) - handler.respond_to params(request), request.headers + handle_request(request) end end protected + def handle_request(request) + logger.info "#{request.method} #{request.uri}" + logger.debug " #{params(request)}" + handler = handler_for(request) + handler.respond_to params(request), request.headers + rescue StandardError => e + logger.error e + logger.error e.backtrace.join "\n " + request.respond 500, "{}" + end + def handler_for(request) # with reel the request is the responder - Dispatcher.new(request) + responder = LoggingResponder.new(request, logger) + Dispatcher.new(responder) end def params(request) @@ -44,5 +59,8 @@ module Nickserver end end + def logger + @logger ||= ::Logger.new Config.log_file + end end end |