Class: Soaspec::SpecLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/soaspec/spec_logger.rb

Overview

Handles logs of API requests and responses

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.output_to_fileObject

Readers for log parameters



21
22
23
# File 'lib/soaspec/spec_logger.rb', line 21

def output_to_file
  @output_to_file
end

.output_to_terminalObject

Readers for log parameters



21
22
23
# File 'lib/soaspec/spec_logger.rb', line 21

def output_to_terminal
  @output_to_terminal
end

.time_test_runObject (readonly)

Readers for log parameters



21
22
23
# File 'lib/soaspec/spec_logger.rb', line 21

def time_test_run
  @time_test_run
end

.traffic_folderObject

Folder to put API traffic logs



19
20
21
# File 'lib/soaspec/spec_logger.rb', line 19

def traffic_folder
  @traffic_folder
end

Class Method Details

.createLogger

Create new log file if necessary and setup logging level



54
55
56
57
58
59
60
61
62
63
# File 'lib/soaspec/spec_logger.rb', line 54

def create
  create_log_file
  @logger = Logger.new(traffic_file) # Where request and responses of APIs are stored
  @logger.formatter = proc do |severity, datetime, _progname, msg|
    message = "SpecLog, [#{datetime.strftime('%Y-%m-%d_%H:%M:%S')}] #{severity} -- : #{msg}\n"
    print message.colorize(:light_blue) if @output_to_terminal
    message
  end
  @logger
end

.info(message) ⇒ Object

Log a message using Soaspec logger



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/soaspec/spec_logger.rb', line 67

def info(message)
  return unless log_api_traffic?

  if message.respond_to? :each
    message.each do |message_item|
      @logger.info(message_item)
    end
  else
    @logger.info(message)
  end
end

.log_api_traffic=(set) ⇒ Object

Whether to log all API traffic



24
25
26
27
# File 'lib/soaspec/spec_logger.rb', line 24

def log_api_traffic=(set)
  @log_api_traffic = set
  RestClient.log = nil unless set
end

.log_api_traffic?Boolean



30
31
32
# File 'lib/soaspec/spec_logger.rb', line 30

def log_api_traffic?
  @log_api_traffic.nil? ? true : @log_api_traffic
end

.traffic_fileString



47
48
49
50
# File 'lib/soaspec/spec_logger.rb', line 47

def traffic_file
  filename = "traffic_#{time_test_run}.log"
  File.join(traffic_folder, filename)
end