Sha256: a32d79b280393180580b034d785c8fee2d2e583f71da886a472fc5bb0bf03a75

Contents?: true

Size: 1.77 KB

Versions: 3

Compression:

Stored size: 1.77 KB

Contents

# -*- coding: utf-8 -*-
require 'logger'

module Lanes

    class MultiDestinationLogger
        def initialize
            @targets = [
                STDOUT,
                File.open("log/#{Lanes.config.environment}.log", "a")
            ]
            Lanes.config.get(:environment) do
                @targets.each{|t| t.sync = ! Lanes.env.production? }
            end
        end

        def write(*args)
            @targets.each {|t| t.write(*args)}
        end

        def close
            @targets.each(&:close)
        end

    end

    class << self
        def logger
            @logger ||= (
                if defined?(::Rails)
                    Rails.logger
                else
                    if Lanes.env.production?
                        dest = if FileTest.writable?("log/production.log")
                                   "log/production.log"
                               else
                                   STDOUT
                               end
                        ::Logger.new(dest)
                    else
                        ::Logger.new MultiDestinationLogger.new
                    end
                end
            )
        end

        def logger=( logger )
            @logger = logger
        end

        def silence_logs( &block )
            old_logger = Lanes.logger
            begin
                Lanes.logger=Logger.new( StringIO.new )
                yield
            ensure
                Lanes.logger=old_logger
            end
        end

        def logger_debug( output )
            logger.debug '⚡ '*40
            logger.debug '⚡ ' + output
            logger.debug '⚡ '*40
        end

    end

    Lanes.config.get(:environment) do | env |
        self.logger=nil # it'll be re-opened on next write
    end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lanes-0.4.0 lib/lanes/logger.rb
lanes-0.3.0 lib/lanes/logger.rb
lanes-0.1.9.5 lib/lanes/logger.rb