Sha256: 3b9b0902582129c25b7d3ae761f0cdf844a18cd3f73517e0bc9d189be2091834
Contents?: true
Size: 1.21 KB
Versions: 143
Compression:
Stored size: 1.21 KB
Contents
# encoding: utf-8 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 happened", :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
143 entries across 143 versions & 7 rubygems