lib/rspec/terraform/logging.rb in rspec-terraform-0.1.0.pre.39 vs lib/rspec/terraform/logging.rb in rspec-terraform-0.1.0.pre.40
- old
+ new
@@ -3,30 +3,48 @@
module RSpec
module Terraform
module Logging
class << self
def resolve_streams(opts = {})
- streams = opts[:streams] || []
+ opts = resolve_opts(opts)
+ streams = opts[:streams]
+ level = opts[:level]
devices = devices(opts)
+ resolve_opts(opts)
+
{
- logger: resolve_logger(opts[:logger], streams, devices),
+ logger: resolve_logger(opts[:logger], streams, devices, level),
stdout: resolve_stdout(opts[:stdout], streams, devices),
stderr: resolve_stderr(opts[:stderr], streams, devices)
}
end
private
- def resolve_logger(logger, streams, devices)
+ def resolve_opts(opts)
+ streams = opts[:streams] || []
+ level = opts[:level] || Logger::INFO
+
+ if streams.include?(:file) && !opts[:file_path]
+ raise(
+ ArgumentError,
+ 'File logging requested but no file path provided'
+ )
+ end
+
+ opts.merge(streams: streams, level: level)
+ end
+
+ def resolve_logger(logger, streams, devices, level)
return logger if logger
log_devices = []
log_devices << devices[:file] if streams.include?(:file)
log_devices << devices[:stdout] if streams.include?(:standard)
- multi_io(log_devices)
+ Logger.new(multi_io(log_devices), level: level)
end
def resolve_stdout(stdout, streams, devices)
return stdout if stdout
@@ -48,10 +66,10 @@
end
def devices(opts)
{
file: log_device(opts[:file_path] || File::NULL),
- stdout: log_device($stdout),
+ stdout: log_device(opts[:stdout] || $stdout),
stderr: log_device($stderr)
}
end
def log_device(io)