Sha256: 8125260fb30abe40c45903b4602edc9e5e62c4ae5193c25b6a26041af6aca267

Contents?: true

Size: 1.89 KB

Versions: 13

Compression:

Stored size: 1.89 KB

Contents

require 'logger'

module Skylight
  module Util
    # Log both to the specified logger and STDOUT
    class AlertLogger
      def initialize(logger)
        @logger = logger
      end

      def write(*args)
        STDERR.write *args

        # Try to avoid writing to STDOUT/STDERR twice
        logger_logdev = @logger.instance_variable_get(:@logdev)
        logger_out = logger_logdev && logger_logdev.respond_to?(:dev) ? logger_logdev.dev : nil
        if logger_out != STDOUT && logger_out != STDERR
          @logger.<<(*args)
        end
      end

      def close
      end
    end

    module Logging
      def self.trace?
        ENV[TRACE_ENV_KEY]
      end

      if trace?
        def trace(msg, *args)
          log :debug, msg, *args
        end

        def t
          log :debug, yield
        end
      else
        def trace(*)
        end

        def t
        end
      end

      def debug(msg, *args)
        log :debug, msg, *args
      end

      def info(msg, *args)
        log :info, msg, *args
      end

      def warn(msg, *args)
        log :warn, msg, *args
      end

      def error(msg, *args)
        log :error, msg, *args
      end

      alias log_trace trace
      alias log_debug debug
      alias log_info  info
      alias log_warn  warn
      alias log_error error

      alias fmt       sprintf

      def log(level, msg, *args)
        return unless respond_to?(:config)
        return unless c = config

        if logger = c.logger
          return unless logger.respond_to?(level)

          if args.length > 0
            logger.send level, sprintf("[SKYLIGHT] [#{Skylight::VERSION}] #{msg}", *args)
          else
            logger.send level, "[SKYLIGHT] [#{Skylight::VERSION}] #{msg}"
          end
        end
      rescue Exception => e
        if ENV[TRACE_ENV_KEY]
          puts "[ERROR] #{e.message}"
          puts e.backtrace
        end
      end

    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
skylight-1.0.0.beta4 lib/skylight/util/logging.rb
skylight-1.0.0.beta3 lib/skylight/util/logging.rb
skylight-0.10.3 lib/skylight/util/logging.rb
skylight-0.10.2 lib/skylight/util/logging.rb
skylight-1.0.0.beta2 lib/skylight/util/logging.rb
skylight-0.10.0 lib/skylight/util/logging.rb
skylight-0.9.4 lib/skylight/util/logging.rb
skylight-0.9.3 lib/skylight/util/logging.rb
skylight-0.9.2 lib/skylight/util/logging.rb
skylight-0.9.1 lib/skylight/util/logging.rb
skylight-0.9.0 lib/skylight/util/logging.rb
skylight-0.8.1 lib/skylight/util/logging.rb
skylight-0.8.0 lib/skylight/util/logging.rb