Sha256: 205c322ca8682ccb2abcab2adeebc29180909a2971ac4ca81331faad57f7404d

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

module Protobuf
  module Logging
    def self.initialize_logger(log_target=$stdout, log_level=::Logger::INFO)
      @counter ||= 0
      @counter = @counter + 1
      old_logger = defined?(@logger) ? @logger : nil
      @logger = Logger.new(log_target)
      @logger.level = log_level
      old_logger.close if old_logger and close_old_logger?
      @logger
    end

    def self.close_old_logger=(boolean)
      @close_old_logger = !!boolean
    end

    def self.close_old_logger?
      defined?(@close_old_logger) ? @close_old_logger : true
    end

    def self.logger
      defined?(@logger) ? @logger : initialize_logger
    end

    def self.logger=(new_logger)
      @logger = new_logger
    end

    def logger
      ::Protobuf::Logging.logger
    end

    def log_exception(ex)
      logger.error { ex.message }
      logger.error { ex.backtrace[0..5].join("\n") }
      logger.debug { ex.backtrace.join("\n") }
    end

    def log_signature
      @_log_signature ||= "[#{self.class == Class ? self.name : self.class.name}]"
    end

    def sign_message(message)
      "#{log_signature} #{message}"
    end
  end
end

# Inspired by [mperham](https://github.com/mperham/sidekiq)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
protobuf-3.3.0 lib/protobuf/logging.rb