Sha256: d5a3f683dda58adc0f4020b6c7e565a1d21e6e7d87f9c515a3cd3fac103c580c

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

module Wukong
  # Common logger
  #
  # Set your own at any time with
  #   Wukong.logger = YourAwesomeLogger.new(...)
  # If you have log4r installed you can use
  #   Wukong.logger = Wukong.default_log4r_logger
  #
  # If Wukong.logger is too much typing for you,
  # use the Log constant
  #
  # Default format:
  #     I, [2009-07-26T19:58:46-05:00 #12332]: Up to 2000 char message
  #
  def self.logger
    @logger ||= default_ruby_logger
  end

  #
  # Log4r logger, set up to produce tab-delimited (and thus, wukong|hadoop
  # friendly) output lines
  #
  def self.default_log4r_logger logger_handle='wukong'
    require 'log4r'
    lgr       = Log4r::Logger.new logger_handle
    outputter = Log4r::Outputter.stderr
    # Define timestamp formatter method
    ::Time.class_eval do def utc_iso8601() utc.iso8601 ; end ; end
    # 2009-07-25T00:12:05Z INFO PID\t
    outputter.formatter  = Log4r::PatternFormatter.new(
      :pattern     => "%d %.4l #{Process.pid}\t%.2000m",
      :date_method => :utc_iso8601
      )
    lgr.outputters = outputter
    lgr
  end

  def self.default_ruby_logger
    require 'logger'
    logger = Logger.new STDERR
    logger.instance_eval do
      def dump *args
        debug args.inspect
      end
    end
    logger
  end

  def self.logger= logger
    @logger = logger
  end
end

#
# A convenient logger.
#
# Define NO_WUKONG_LOG (or define Log yourself) to prevent its creation
#
Log = Wukong.logger unless (defined?(Log) || defined?(NO_WUKONG_LOG))

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wukong-1.5.4 lib/wukong/logger.rb
wukong-1.5.3 lib/wukong/logger.rb
wukong-1.5.2 lib/wukong/logger.rb