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



36
37
38
# File 'lib/soaspec/spec_logger.rb', line 36

def output_to_file
  @output_to_file
end

.output_to_terminalObject

Readers for log parameters



36
37
38
# File 'lib/soaspec/spec_logger.rb', line 36

def output_to_terminal
  @output_to_terminal
end

.terminal_colorObject

Color shown when displaying in terminal



34
35
36
# File 'lib/soaspec/spec_logger.rb', line 34

def terminal_color
  @terminal_color
end

.time_test_runObject (readonly)

Readers for log parameters



36
37
38
# File 'lib/soaspec/spec_logger.rb', line 36

def time_test_run
  @time_test_run
end

.traffic_fileString

Returns Traffic file to create logs at.

Returns:

  • (String)

    Traffic file to create logs at



64
65
66
67
68
69
# File 'lib/soaspec/spec_logger.rb', line 64

def traffic_file
  return File.join(traffic_folder, @traffic_file) if @traffic_file

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

.traffic_folderObject

Folder to put API traffic logs



32
33
34
# File 'lib/soaspec/spec_logger.rb', line 32

def traffic_folder
  @traffic_folder
end

Class Method Details

.createLogger

Create new log file if necessary and setup logging level

Returns:

  • (Logger)

    Logger class to record API traffic



73
74
75
76
77
78
79
80
81
82
# File 'lib/soaspec/spec_logger.rb', line 73

def create
  create_log_file
  @logger = ApiLogger.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(terminal_color) if @output_to_terminal
    message if @output_to_file
  end
  @logger
end

.info(message) ⇒ Object

Log a message using Soaspec logger

Parameters:

  • message (String)

    The message to add to the logger



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/soaspec/spec_logger.rb', line 86

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



41
42
43
44
# File 'lib/soaspec/spec_logger.rb', line 41

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

.log_api_traffic?Boolean

Returns Whether to log all API traffic.

Returns:

  • (Boolean)

    Whether to log all API traffic



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

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