Sha256: 6c96962b2435da17d080c8d6a6a7e4c0a205723f6dc6b3181e78c30f8ec88c2b

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module Bridgetown
  class LogWriter < ::Logger
    def initialize
      super($stdout, formatter: proc { |_, _, _, msg| msg.to_s })
    end

    def enable_prefix
      self.formatter = proc do |_, _, _, msg|
        "\e[32m[Bridgetown]\e[0m #{msg}"
      end
    end

    def add(severity, message = nil, progname = nil)
      severity ||= UNKNOWN
      @logdev = logdevice(severity)

      return true if @logdev.nil? || severity < @level

      progname ||= @progname
      if message.nil?
        if block_given?
          message = yield
        else
          message = progname
          progname = @progname
        end
      end
      @logdev.puts(
        format_message(format_severity(severity), Time.now, progname, message)
      )
      true
    end

    # Log a `WARN` message
    def warn(progname = nil, &block)
      add(WARN, nil, progname.yellow, &block)
    end

    # Log an `ERROR` message
    def error(progname = nil, &block)
      add(ERROR, nil, progname.red, &block)
    end

    def close
      # No LogDevice in use
    end

    private

    def logdevice(severity)
      if severity > INFO
        $stderr
      else
        $stdout
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bridgetown-core-1.3.4 lib/bridgetown-core/log_writer.rb
bridgetown-core-1.3.3 lib/bridgetown-core/log_writer.rb
bridgetown-core-1.3.2 lib/bridgetown-core/log_writer.rb