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

.loggerObject

Logger used to log API requests



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

def logger
  @logger
end

.output_to_fileObject

Readers for log parameters



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

def output_to_file
  @output_to_file
end

.output_to_terminalObject

Readers for log parameters



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

def output_to_terminal
  @output_to_terminal
end

.prognameString



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

def progname
  @progname
end

.terminal_colorObject

Color shown when displaying in terminal



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

def terminal_color
  @terminal_color
end

.time_formatObject

String representing date format to use for traffic



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

def time_format
  @time_format || '%H:%M:%S'
end

.time_test_runObject (readonly)

Readers for log parameters



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

def time_test_run
  @time_test_run
end

.traffic_folderObject

Folder to put API traffic logs



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

def traffic_folder
  @traffic_folder
end

Class Method Details

.createLogger

Create new log file if necessary and setup logging level



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

def create
  create_log_file
  @logger = ApiLogger.new(traffic_file) # Where request and responses of APIs are stored
  @logger.progname = progname || 'SpecLog'
  @logger.formatter = proc do |_severity, datetime, progname, msg|
    message = "#{progname}, [#{datetime.strftime(time_format)}] : #{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



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/soaspec/spec_logger.rb', line 115

def info(message)
  return unless log_api_traffic?

  create unless @logger
  if message.respond_to? :each
    message.each do |message_item|
      info(message_item)
    end
  else
    if block_given?
      @logger.info(message) { yield }
    else
      @logger.info(message)
    end
  end
end

.log_api_traffic=(set) ⇒ Object

Whether to log all API traffic



75
76
77
78
# File 'lib/soaspec/spec_logger.rb', line 75

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

.log_api_traffic?Boolean



81
82
83
# File 'lib/soaspec/spec_logger.rb', line 81

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



69
70
71
72
# File 'lib/soaspec/spec_logger.rb', line 69

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

.traffic_fileString



61
62
63
64
65
66
# File 'lib/soaspec/spec_logger.rb', line 61

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



55
56
57
58
# File 'lib/soaspec/spec_logger.rb', line 55

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