THRIFT-4198 Ruby should log Thrift internal errors to global logger
Client: Ruby
Patch: Sho Nakatani <lay.sakura@gmail.com>
This closes #1252
diff --git a/lib/rb/lib/thrift/processor.rb b/lib/rb/lib/thrift/processor.rb
index fd312ee..ce21e12 100644
--- a/lib/rb/lib/thrift/processor.rb
+++ b/lib/rb/lib/thrift/processor.rb
@@ -17,10 +17,18 @@
# under the License.
#
+require 'logger'
+
module Thrift
module Processor
- def initialize(handler)
+ def initialize(handler, logger=nil)
@handler = handler
+ if logger.nil?
+ @logger = Logger.new(STDERR)
+ @logger.level = Logger::WARN
+ else
+ @logger = logger
+ end
end
def process(iprot, oprot)
@@ -30,6 +38,7 @@
send("process_#{name}", seqid, iprot, oprot)
rescue => e
x = ApplicationException.new(ApplicationException::INTERNAL_ERROR, 'Internal error')
+ @logger.debug "Internal error : #{e.message}\n#{e.backtrace.join("\n")}"
write_error(x, oprot, name, seqid)
end
true