class Soaspec::SpecLogger
Handles logs of API requests and responses
Attributes
Logger used to log API requests
Readers for log parameters
Readers for log parameters
@return [String] Name of program to include in logs
Color shown when displaying in terminal
@return [String] String representing date format to use for traffic
Readers for log parameters
Folder to put API traffic logs
Public Class Methods
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
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
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
@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
@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
@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
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
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
@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
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 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