Sha256: 5cc19259743f9479077a2f93746aaba73ae806ea8018f71eda3b91079013ed98

Contents?: true

Size: 1.43 KB

Versions: 26

Compression:

Stored size: 1.43 KB

Contents

require 'logger'

module Terraspace
  class Logger < ::Logger
    def initialize(*args)
      super
      self.formatter = Formatter.new
      self.level = ENV['TS_LOG_LEVEL'] || :info # note: only respected when config.logger not set in config/app.rb
    end

    def format_message(severity, datetime, progname, msg)
      line = if @logdev.dev == $stdout || @logdev.dev == $stderr
        msg # super simple format if stdout
      else
        super # use the configured formatter
      end
      out = line.force_encoding('UTF-8') =~ /\n$/ ? line : "#{line}\n"
      @@buffer << out
      out
    end

    # Used to allow terraform output to always go to stdout
    # Terraspace output goes to stderr by default
    # See: terraspace/shell.rb
    def stdout(msg, newline: true)
      out = newline ? "#{msg}\n" : msg
      @@buffer << out
      print out
    end

    def stdin_capture(text)
      @@buffer << "#{text}\n"
      @@stdin_capture = text
    end

    class << self
      @@stdin_capture = ''
      def stdin_capture
        @@stdin_capture
      end

      @@buffer = []
      def buffer
        @@buffer
      end

      def logs
        # force_encoding https://jch.github.io/posts/2013-03-05-ruby-incompatible-encoding.html
        @@buffer.map { |s| s.force_encoding('UTF-8') }.join('')
      end

      # for test framework
      def clear
        Terraspace::Command.reset_dispatch_command
        @@buffer = []
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
terraspace-2.2.17 lib/terraspace/logger.rb
terraspace-2.2.16 lib/terraspace/logger.rb
terraspace-2.2.15 lib/terraspace/logger.rb
terraspace-2.2.14 lib/terraspace/logger.rb
terraspace-2.2.13 lib/terraspace/logger.rb
terraspace-2.2.12 lib/terraspace/logger.rb
terraspace-2.2.11 lib/terraspace/logger.rb
terraspace-2.2.10 lib/terraspace/logger.rb
terraspace-2.2.9 lib/terraspace/logger.rb
terraspace-2.2.8 lib/terraspace/logger.rb
terraspace-2.2.7 lib/terraspace/logger.rb
terraspace-2.2.6 lib/terraspace/logger.rb
terraspace-2.2.5 lib/terraspace/logger.rb
terraspace-2.2.4 lib/terraspace/logger.rb
terraspace-2.2.3 lib/terraspace/logger.rb
terraspace-2.2.2 lib/terraspace/logger.rb
terraspace-2.2.1 lib/terraspace/logger.rb
terraspace-2.2.0 lib/terraspace/logger.rb
terraspace-2.1.7 lib/terraspace/logger.rb
terraspace-2.1.6 lib/terraspace/logger.rb