class Hedgelog
Constants
- BACKTRACE_RE
- LEVELS
- RESERVED_KEYS
- TIMESTAMP_FORMAT
- TOP_LEVEL_KEYS
- VERSION
Attributes
app[W]
level[R]
Public Class Methods
new(logdev = STDOUT, shift_age = nil, shift_size = nil, cleaner=nil)
click to toggle source
# File lib/hedgelog.rb, line 28 def initialize(logdev = STDOUT, shift_age = nil, shift_size = nil, cleaner=nil) @level = LEVELS[:debug] @channel = nil @logdev = nil @app = nil @scrubber = Hedgelog::Scrubber.new(cleaner) @normalizer = Hedgelog::Normalizer.new @channel_context = Hedgelog::Context.new(@scrubber, @normalizer) if logdev.is_a?(self.class) @channel = logdev else @logdev = Logger::LogDevice.new(logdev, shift_age: shift_age, shift_size: shift_size) end end
Public Instance Methods
[](key)
click to toggle source
# File lib/hedgelog.rb, line 70 def [](key) @channel_context[key] end
[]=(key, val)
click to toggle source
# File lib/hedgelog.rb, line 66 def []=(key, val) @channel_context[key] = val end
add(severity = LEVELS[:unknown], message = nil, progname = nil, context = {}) { || ... }
click to toggle source
# File lib/hedgelog.rb, line 51 def add(severity = LEVELS[:unknown], message = nil, progname = nil, context = {}, &block) return true if (@logdev.nil? && @channel.nil?) || severity < @level message, context = *yield if block context ||= {} context = Hedgelog::Context.new(@scrubber, @normalizer, context) unless context.is_a? Hedgelog::Context context.merge!(@channel_context) context[:message] ||= message return write(severity, context) if @logdev @channel&.add(severity, nil, progname, context) end
channel(name)
click to toggle source
# File lib/hedgelog.rb, line 82 def channel(name) sc = self.class.new(self) sc.level = @level channel_name = name channel_name = "#{self[:channel]} => #{name}" if self[:channel] sc[:channel] = channel_name sc end
clear_channel_context()
click to toggle source
# File lib/hedgelog.rb, line 78 def clear_channel_context @channel_context = {} end
delete(key)
click to toggle source
# File lib/hedgelog.rb, line 74 def delete(key) @channel_context.delete(key) end
formatter()
click to toggle source
# File lib/hedgelog.rb, line 119 def formatter ::Logger::Formatter.new end
formatter=(_value)
click to toggle source
# File lib/hedgelog.rb, line 123 def formatter=(_value) formatter end
level=(level)
click to toggle source
# File lib/hedgelog.rb, line 44 def level=(level) int_level = level_to_int(level) raise ::ArgumentError, "#{self.class}#level= , #{level} is not a valid level." if int_level.nil? @level = int_level end
silence(temporary_level = LEVELS[:error]) { |self| ... }
click to toggle source
# File lib/hedgelog.rb, line 110 def silence(temporary_level = LEVELS[:error]) old_level = level self.level = temporary_level yield self ensure self.level = old_level end
Private Instance Methods
debugharder(callinfo)
click to toggle source
# File lib/hedgelog.rb, line 171 def debugharder(callinfo) m = BACKTRACE_RE.match(callinfo) return unless m path, line, method = m[1..3] whence = $LOAD_PATH.find { |p| path.start_with?(p) } file = if whence # Remove the RUBYLIB path portion of the full file name path[whence.length + 1..-1] else # We get here if the path is not in $: path end { file: file, line: line, method: method } end
default_data(severity)
click to toggle source
# File lib/hedgelog.rb, line 154 def default_data(severity) { timestamp: Time.now.strftime(TIMESTAMP_FORMAT), level_name: level_from_int(severity), level: severity } end
extract_top_level_keys(context)
click to toggle source
# File lib/hedgelog.rb, line 162 def extract_top_level_keys(context) data = {} TOP_LEVEL_KEYS.each do |key| data[key] = context.delete(key) if context.key? key end data[:context] = context data end
level_from_int(level)
click to toggle source
# File lib/hedgelog.rb, line 133 def level_from_int(level) return LEVELS[level] if level.is_a?(Integer) level.to_sym end
level_to_int(level)
click to toggle source
# File lib/hedgelog.rb, line 127 def level_to_int(level) return level if level.is_a?(Integer) LEVELS[level] end
write(severity, context)
click to toggle source
# File lib/hedgelog.rb, line 139 def write(severity, context) return true if @logdev.nil? context.normalize! context.scrub! data = context.merge(default_data(severity)) data[:app] = @app if @app data[:caller] = debugharder(caller(4, 1).first) if debug? data = extract_top_level_keys(data) @logdev.write(Yajl::Encoder.encode(data) + "\n") true end