Sha256: 5e1896cac62484bfbc0a4bd9bfbb52906a9f912b713100747090d64c51b9c558
Contents?: true
Size: 1.57 KB
Versions: 4
Compression:
Stored size: 1.57 KB
Contents
require 'logger' module Protobuf class Logger < ::Logger class << self attr_accessor :file, :level # Stub out the log methods for Protobuf::Logger as singleton methods [:debug, :info, :warn, :error, :fatal, :any, :add, :log].each do |m| define_method(m) do |*params, &block| instance && instance.__send__(m, *params, &block) end end end # One-line file/level configuration def self.configure(options) self.file = options.fetch(:file, false) self.level = options.fetch(:level, false) end # Use to reset the instance def self.reset_device! self.file = self.level = @__instance = nil end # Singleton instance def self.instance @__instance ||= begin log = nil if @file && @level log = new(self.file) log.level = self.level end log end end # # LogMethods module for log method including, e.g.: # # class MyClass # include Protobuf::Logger::LogMethods # ... # end # # Produce a module to allow "include" in other classes to avoid # cluttering the namespace of the including class with the other methods defined above # module LogMethods [:debug, :info, :warn, :error, :fatal, :any, :add, :log].each do |m| define_method("log_#{m}") do |*params, &block| Protobuf::Logger.__send__(m, *params, &block) end end def self.included(base) base.extend(LogMethods) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
protobuf-1.4.2 | lib/protobuf/common/logger.rb |
protobuf-1.4.1 | lib/protobuf/common/logger.rb |
protobuf-1.4.0 | lib/protobuf/common/logger.rb |
protobuf-1.3.0 | lib/protobuf/common/logger.rb |