module Collins::Api::Logging

Public Instance Methods

all_logs(options = {}) click to toggle source

Same as logs but for all assets @see logs

# File lib/collins/api/logging.rb, line 128
def all_logs options = {}
  parameters = get_page_options(options).merge(
    :filter => get_option(:filter, options, nil)
  )
  parameters = select_non_empty_parameters parameters
  logger.debug("Fetching logs for all assets with parameters #{parameters.inspect}")
  http_get("/api/assets/logs", parameters) do |response|
    parse_response response, :as => :paginated, :default => [], :raise => strict?, :expects => 200 do |json|
      json.map{|j| OpenStruct.new(symbolize_hash(j))}
    end
  end
end
get_log(id) click to toggle source

Get a log, given its id @param [Int] id The log id to retrieve @return [OpenStruct] The log openstruct @raise [Collins::UnexpectedResponseError] on a non-200 response

# File lib/collins/api/logging.rb, line 145
def get_log id
  logger.debug("Fetching log #{id}")
  http_get("/api/log/#{id}") do |response|
    parse_response response, :as => :paginated, :default => nil, :raise => strict?, :expects => 200 do |json|
      OpenStruct.new(symbolize_hash(json))
    end
  end
end
log!(asset_or_tag, message, level = nil) click to toggle source

Log a message against an asset using the specified level @param [String,Collins::Asset] asset_or_tag @param [String] message @param [Severity] level severity level to use @return [OpenStruct] The log struct created @raise [Collins::ExpectationFailed] the specified level was invalid @raise [Collins::RequestError,Collins::UnexpectedResponseError] if the asset or message invalid

# File lib/collins/api/logging.rb, line 64
def log! asset_or_tag, message, level = nil
  asset = get_asset_or_tag asset_or_tag
  parameters = {
    :message => message,
    :type => log_level_from_string(level)
  }
  parameters = select_non_empty_parameters parameters
  logger.debug("Logging to #{asset.tag} with parameters #{parameters.inspect}")
  http_put("/api/asset/#{asset.tag}/log", parameters, asset.location) do |response|
    parse_response response, :as => :paginated, :expects => 201 do |json|
      OpenStruct.new(symbolize_hash(json))
    end
  end
end
logs(asset_or_tag, options = {}) click to toggle source

Fetch logs for an asset according to the options specified @example

:filter => "EMERGENCY;ALERT" # Only retrieve emergency and alert messages
:filter => "!DEBUG;!NOTE"    # Only retrieve non-debug/non-notes

@param [String,Collins::Asset] asset_or_tag @param [Hash] options query options @option options [Fixnum] :page (0) Page of results @option options [Fixnum] :size (25) Number of results to retrieve @option options [String] :sort (DESC) Sort ordering for results @option options [String] :filter Semicolon separated list of severity levels to include or exclude @option options [String] :all_tag If specified, and asset tag is set to :all_tag, proxy to the all_logs method @note To exclude a level via a filter it must be prepended with a `!` @return [Array<OpenStruct>] Array of log objects @raise [Collins::UnexpectedResponseError] on a non-200 response

# File lib/collins/api/logging.rb, line 93
def logs asset_or_tag, options = {}
  asset = get_asset_or_tag asset_or_tag
  all_tag = options.delete(:all_tag)
  if all_tag && all_tag.to_s.downcase == asset.tag.to_s.downcase then
    return all_logs options
  end
  parameters = get_page_options(options).merge(
    :filter => get_option(:filter, options, nil)
  )
  parameters = select_non_empty_parameters parameters
  logger.debug("Fetching logs for #{asset.tag} with parameters #{parameters.inspect}")
  http_get("/api/asset/#{asset.tag}/logs", parameters, asset.location) do |response|
    parse_response response, :as => :paginated, :default => [], :raise => strict?, :expects => 200 do |json|
      json.map{|j| OpenStruct.new(symbolize_hash(j))}
    end
  end
end
search_logs(options = {}) click to toggle source

new solr interface

# File lib/collins/api/logging.rb, line 112
def search_logs options = {}
  parameters = get_page_options(options).merge(
    :query => get_option(:query, options, nil),
    :sortField => get_option(:sortField, options, 'ID')
  )
  parameters = select_non_empty_parameters parameters
  logger.debug("Fetching logs for all assets with parameters #{parameters.inspect}")
  http_get("/api/assets/logs/search", parameters) do |response|
    parse_response response, :as => :paginated, :default => [], :raise => strict?, :expects => 200 do |json|
      json.map{|j| OpenStruct.new(symbolize_hash(j))}
    end
  end
end

Private Instance Methods

log_level_from_string(level) click to toggle source
# File lib/collins/api/logging.rb, line 155
def log_level_from_string level
  return nil if (level.nil? || level.empty?)
  s = Collins::Api::Logging::Severity
  if s.valid? level then
    s.value_of level
  else
    raise Collins::ExpectationFailedError.new("#{level} is not a valid log level")
  end
end