Sha256: 5099032104ef349d196b7ab912b7296cae3496ba12c4b4f80c4ae7436c09c96e
Contents?: true
Size: 1.19 KB
Versions: 29
Compression:
Stored size: 1.19 KB
Contents
if ENV["PROFILE_BAD_LOG_CALLS"] || ($DEBUGLIST || []).include?("log") # Set PROFILE_BAD_LOG_CALLS=1 in your environment if you want # to track down logger calls that cause performance problems # # Related research here: # https://github.com/jordansissel/experiments/tree/master/ruby/logger-string-vs-block # # Basically, the following is wastes tons of effort creating objects that are # never used if the log level hides the log: # # logger.debug("something happend", :what => Happened) # # This is shown to be 4x faster: # # logger.debug(...) if logger.debug? # # I originally intended to use RubyParser and SexpProcessor to # process all the logstash ruby code offline, but it was much # faster to write this monkeypatch to warn as things are called. require "cabin/mixins/logger" module Cabin::Mixins::Logger LEVELS.keys.each do |level| m = "original_#{level}".to_sym predicate = "#{level}?".to_sym alias_method m, level define_method(level) do |*args| if !send(predicate) warn("Unconditional log call", :location => caller[0]) end send(m, *args) end end end end # PROFILE_BAD_LOG_CALLS
Version data entries
29 entries across 29 versions & 1 rubygems