From bf356d67cf25737a78016c9f97c3d9519500ad64 Mon Sep 17 00:00:00 2001 From: Francesco Rodriguez Date: Thu, 8 Sep 2016 00:05:34 +0200 Subject: [PATCH] Use same write log logic for hijacked requests. Both methods will check if logger responds to write, before calling it. --- lib/puma/commonlogger.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/puma/commonlogger.rb b/lib/puma/commonlogger.rb index 9c3905c7cc..4ef940ce37 100644 --- a/lib/puma/commonlogger.rb +++ b/lib/puma/commonlogger.rb @@ -49,8 +49,7 @@ def call(env) def log_hijacking(env, status, header, began_at) now = Time.now - logger = @logger || env['rack.errors'] - logger.write HIJACK_FORMAT % [ + msg = HIJACK_FORMAT % [ env['HTTP_X_FORWARDED_FOR'] || env["REMOTE_ADDR"] || "-", env["REMOTE_USER"] || "-", now.strftime("%d/%b/%Y %H:%M:%S"), @@ -59,6 +58,8 @@ def log_hijacking(env, status, header, began_at) env["QUERY_STRING"].empty? ? "" : "?"+env["QUERY_STRING"], env["HTTP_VERSION"], now - began_at ] + + write(msg) end PATH_INFO = 'PATH_INFO'.freeze @@ -88,7 +89,12 @@ def log(env, status, header, began_at) length, now - began_at ] + write(msg) + end + + def write(msg) logger = @logger || env['rack.errors'] + # Standard library logger doesn't support write but it supports << which actually # calls to write on the log device without formatting if logger.respond_to?(:write)