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_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



83
84
85
86
87
88
89
90
91
92
93
# File 'lib/soaspec/spec_logger.rb', line 83

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
  RestClient.log = @logger
  @logger
end

.info(message) ⇒ Object

Log a message using Soaspec logger Logger (and it’s file) will be created if it’s not already set

Parameters:

  • message (String)

    The message to add to the logger



98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/soaspec/spec_logger.rb', line 98

def info(message)
  return unless log_api_traffic?

  create unless @logger
  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



59
60
61
62
# File 'lib/soaspec/spec_logger.rb', line 59

def log_api_traffic=(set)
  @log_api_traffic = set
  reset_log
end

.log_api_traffic?Boolean

Returns Whether to log all API traffic.

Returns:

  • (Boolean)

    Whether to log all API traffic



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

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

.reset_logObject

Unset Logger object. It will be recreated on next time ‘info’ is called



53
54
55
56
# File 'lib/soaspec/spec_logger.rb', line 53

def reset_log
  @logger = nil
  RestClient.log = nil
end

.traffic_fileString

Returns Traffic file to create logs at.

Returns:

  • (String)

    Traffic file to create logs at



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

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_file=(file) ⇒ Object

Set file to log traffic to



39
40
41
42
# File 'lib/soaspec/spec_logger.rb', line 39

def traffic_file=(file)
  @traffic_file = file
  reset_log
end