Skip to content

Instantly share code, notes, and snippets.

@wintersolutions
Created September 20, 2016 21:59
Show Gist options
  • Save wintersolutions/34559fc6eae8a72100ab136157937d16 to your computer and use it in GitHub Desktop.
Save wintersolutions/34559fc6eae8a72100ab136157937d16 to your computer and use it in GitHub Desktop.
# FIXME: find cause for error (circular dependency?), use: ab -c 50 -n 500 http://localhost:3000/ for burn in
if Rails.env.development?
require 'active_support/core_ext/module/attribute_accessors'
require 'active_support/logger_silence'
require 'active_support/logger_thread_safe_level'
require 'logger'
module ActiveSupport
class Logger < ::Logger
include ActiveSupport::LoggerThreadSafeLevel
include LoggerSilence
# Broadcasts logs to multiple loggers.
def self.broadcast(logger) # :nodoc:
Module.new do
define_method(:add) do |*args, &block|
logger.add(*args, &block)
end
define_method(:<<) do |x|
logger << x
super(x)
end
define_method(:close) do
logger.close
end
define_method(:progname=) do |name|
logger.progname = name
super(name)
end
define_method(:formatter=) do |formatter|
logger.formatter = formatter
super(formatter)
end
define_method(:level=) do |level|
logger.level = level
super(level)
end
define_method(:local_level=) do |level|
logger.local_level = level if logger.respond_to?(:local_level=)
super(level) if respond_to?(:local_level=)
end
define_method(:silence) do |level = Logger::ERROR, &block|
if logger.respond_to?(:silence) && logger.method(:silence).owner != ::Kernel
logger.silence(level) do
if respond_to?(:silence) && method(:silence).owner != ::Kernel
super(level, &block)
else
block.call(self)
end
end
else
if respond_to?(:silence) && method(:silence).owner != ::Kernel
super(level, &block)
else
block.call(self)
end
end
end
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment