M .rubocop.yml => .rubocop.yml +1 -0
@@ 29,6 29,7 @@ Metrics/ParameterLists:
Naming/MethodParameterName:
AllowNamesEndingInNumbers: false
AllowedNames:
+ - io
- m
- e
- q
A lib/background_log.rb => lib/background_log.rb +29 -0
@@ 0,0 1,29 @@
+# frozen_string_literal: true
+
+# Subclass IO because Logger does an is_a? check
+class BackgroundLog < IO
+ def initialize(io)
+ @io = io
+ @q = Queue.new
+ thread
+ at_exit do
+ @q << :done
+ thread.join
+ end
+ end
+
+ def thread
+ @thread ||= Thread.new do
+ loop do
+ m = @q.pop
+ break if m == :done
+
+ @io.write m
+ end
+ end
+ end
+
+ def write(s)
+ @q << s
+ end
+end
M sgx_jmp.rb => sgx_jmp.rb +3 -1
@@ 14,8 14,10 @@ require "ruby-bandwidth-iris"
require "sentry-ruby"
require "statsd-instrument"
+require_relative "lib/background_log"
+
$stdout.sync = true
-LOG = Ougai::Logger.new($stdout)
+LOG = Ougai::Logger.new(BackgroundLog.new($stdout))
LOG.level = ENV.fetch("LOG_LEVEL", "info")
LOG.formatter = Ougai::Formatters::Readable.new(
nil,