class Soaspec::SpecLogger

Handles logs of API requests and responses

Attributes

logger[RW]

Logger used to log API requests

output_to_file[R]

Readers for log parameters

output_to_terminal[R]

Readers for log parameters

progname[RW]

@return [String] Name of program to include in logs

terminal_color[RW]

Color shown when displaying in terminal

time_format[W]

@return [String] String representing date format to use for traffic

time_test_run[R]

Readers for log parameters

traffic_folder[RW]

Folder to put API traffic logs

Public Class Methods

create() click to toggle source

Create new log file if necessary and setup logging level @return [Logger] Logger class to record API traffic

# 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) { || ... } click to toggle source

Log a message using Soaspec logger Logger (and it's file) will be created if it's not already set @param [String, Array] message The message to add to the logger or list of messages

# 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) click to toggle source

Whether to log all API traffic

# File lib/soaspec/spec_logger.rb, line 75
def log_api_traffic=(set)
  @log_api_traffic = set
  reset_log
end
log_api_traffic?() click to toggle source

@return [Boolean] Whether to log all API traffic

# File lib/soaspec/spec_logger.rb, line 81
def log_api_traffic?
  @log_api_traffic.nil? ? true : @log_api_traffic
end
output_to_file=(value) click to toggle source

@param [Symbol, Boolean] value # Whether to output API traffic to log file

# File lib/soaspec/spec_logger.rb, line 86
def output_to_file=(value)
  @output_to_file = value
  reset_log
end
output_to_terminal=(value) click to toggle source

@param [Symbol, Boolean] value # Whether to output API traffic to STDOUT

# File lib/soaspec/spec_logger.rb, line 92
def output_to_terminal=(value)
  @output_to_terminal = value
  reset_log
end
reset_log() click to toggle source

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

# File lib/soaspec/spec_logger.rb, line 69
def reset_log
  @logger = nil
  RestClient.log = nil
end
time_format() click to toggle source

String representing date format to use for traffic

# File lib/soaspec/spec_logger.rb, line 49
def time_format
  @time_format || '%H:%M:%S'
end
traffic_file() click to toggle source

@return [String] Traffic file to create logs at

# 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) click to toggle source

Set file to log traffic to @param [String] file Path to traffic file to use

# File lib/soaspec/spec_logger.rb, line 55
def traffic_file=(file)
  @traffic_file = file
  reset_log
end

Private Class Methods

create_log_file() click to toggle source

Create folder and file to store logs

# File lib/soaspec/spec_logger.rb, line 135
def create_log_file
  return if File.exist?(traffic_file)

  FileUtils.mkdir_p traffic_folder
  FileUtils.touch traffic_file
end