class Ocular::Logging::KafkaLogger
Most of the Logger class is copied from the Ruby Logger class source code.
Public Class Methods
new(settings=nil, kafka=nil)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 12 def initialize(settings=nil, kafka=nil) @level = Severity::DEBUG @formatter = Formatter.new if kafka != nil @kafka = kafka else #logger = Logger.new(STDOUT) #logger.level = Logger::DEBUG #settings[:client][:logger] = logger @kafka = Kafka.new(settings[:client]) end @settings = settings @producer = @kafka.producer @semaphore = Mutex.new end
Public Instance Methods
add(severity, message = nil, run_id = nil) { || ... }
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 61 def add(severity, message = nil, run_id = nil, &block) severity ||= Severity::UNKNOWN if severity < @level return true end if message.nil? if block_given? message = yield else message = progname end end begin @semaphore.synchronize do @kafka.deliver_message(@formatter.format_message(severity, Time.now, run_id, message), topic: @settings[:topic], partition_key: run_id) end rescue StandardError => e STDERR.puts "Error on producing kafka message: #{e}" STDERR.puts "Message was #{message}, stacktrace: #{e.backtrace.join("\n")}" end end
debug(message = nil, &block)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 36 def debug(message = nil, &block) add(Severity::DEBUG, message, @run_id, &block) end
Also aliased as: log
deliver_messages()
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 57 def deliver_messages @producer.deliver_messages end
error(message = nil, &block)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 49 def error(message = nil, &block) add(Severity::ERROR, message, @run_id, &block) end
fatal(message = nil, &block)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 53 def fatal(message = nil, &block) add(Severity::FATAL, message, @run_id, &block) end
info(message = nil, &block)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 41 def info(message = nil, &block) add(Severity::INFO, message, @run_id, &block) end
log_cause(type, environment, run_id = nil)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 96 def log_cause(type, environment, run_id = nil) begin @semaphore.synchronize do @kafka.deliver_message(@formatter.format_cause(type, environment, Time.now, run_id), topic: @settings[:topic], partition_key: run_id) end rescue StandardError => e STDERR.puts "Error on producing kafka log_cause: #{e}" STDERR.puts "type: #{type}, stacktrace: #{e.backtrace.join("\n")}" end end
log_event(property, value, run_id = nil)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 85 def log_event(property, value, run_id = nil) begin @semaphore.synchronize do @kafka.deliver_message(@formatter.format_event(property, value, Time.now, run_id), topic: @settings[:topic], partition_key: run_id) end rescue StandardError => e STDERR.puts "Error on producing kafka log_event: #{e}" STDERR.puts "#{property} => #{value}, stacktrace: #{e.backtrace.join("\n")}" end end
log_timing(key, value, run_id = nil)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 108 def log_timing(key, value, run_id = nil) begin @semaphore.synchronize do @kafka.deliver_message(@formatter.format_event("timing:" + key, value, Time.now, run_id), topic: @settings[:topic], partition_key: run_id) end rescue StandardError => e STDERR.puts "Error on producing kafka log_timing: #{e}" STDERR.puts "Timing: #{key} => #{value}, stacktrace: #{e.backtrace.join("\n")}" end end
reconnect()
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 30 def reconnect() @kafka = Kafka.new(@settings[:client]) @producer = @kafka.producer @semaphore = Mutex.new end
warn(message = nil, &block)
click to toggle source
# File lib/ocular/logging/kafka_logger.rb, line 45 def warn(message = nil, &block) add(Severity::WARN, message, @run_id, &block) end