diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/unicorn.rb | 5 | ||||
-rw-r--r-- | lib/unicorn/http_server.rb | 15 | ||||
-rw-r--r-- | lib/unicorn/socket_helper.rb | 3 |
3 files changed, 11 insertions, 12 deletions
diff --git a/lib/unicorn.rb b/lib/unicorn.rb index 9349e49..9a5eb6f 100644 --- a/lib/unicorn.rb +++ b/lib/unicorn.rb @@ -77,6 +77,11 @@ module Unicorn Unicorn::SocketHelper.sock_name(io) end end + + def self.log_error(logger, message, exc) + logger.error "#{message}: #{exc.message} (#{exc.class})" + exc.backtrace.each { |line| logger.error(line) } + end # :startdoc: end # :enddoc: diff --git a/lib/unicorn/http_server.rb b/lib/unicorn/http_server.rb index acb55f2..76d2590 100644 --- a/lib/unicorn/http_server.rb +++ b/lib/unicorn/http_server.rb @@ -305,8 +305,7 @@ class Unicorn::HttpServer end end rescue => e - logger.error "Unhandled master loop exception #{e.inspect}." - logger.error e.backtrace.join("\n") + Unicorn.log_error(@logger, "master loop error", e) end while true stop # gracefully shutdown all workers on our way out logger.info "master complete" @@ -505,8 +504,7 @@ class Unicorn::HttpServer when Unicorn::HttpParserError # try to tell the client they're bad Unicorn::Const::ERROR_400_RESPONSE else - logger.error "app error: #{e.inspect}" - logger.error e.backtrace.join("\n") + Unicorn.log_error(@logger, "app error", e) Unicorn::Const::ERROR_500_RESPONSE end client.kgio_trywrite(msg) @@ -606,10 +604,7 @@ class Unicorn::HttpServer rescue Errno::EBADF nr < 0 or return rescue => e - if worker - logger.error "Unhandled listen loop exception #{e.inspect}." - logger.error e.backtrace.join("\n") - end + Unicorn.log_error(@logger, "listen loop error", e) if worker end while worker end @@ -657,8 +652,8 @@ class Unicorn::HttpServer build_app! if preload_app logger.info "done reloading config_file=#{config.config_file}" rescue StandardError, LoadError, SyntaxError => e - logger.error "error reloading config_file=#{config.config_file}: " \ - "#{e.class} #{e.message} #{e.backtrace}" + Unicorn.log_error(@logger, + "error reloading config_file=#{config.config_file}", e) self.app = loaded_app end diff --git a/lib/unicorn/socket_helper.rb b/lib/unicorn/socket_helper.rb index 3519a7b..1d4e0f2 100644 --- a/lib/unicorn/socket_helper.rb +++ b/lib/unicorn/socket_helper.rb @@ -101,8 +101,7 @@ module Unicorn end sock.listen(opt[:backlog]) rescue => e - logger.error "error setting socket options: #{e.inspect}" - logger.error e.backtrace.join("\n") + Unicorn.log_error(logger, message, e) end def log_buffer_sizes(sock, pfx = '') |