Module: Collins::Api::Logging

Includes:
Util
Included in:
Collins::Api
Defined in:
lib/collins/api/logging.rb

Defined Under Namespace

Modules: Severity

Constant Summary

Constants included from Util::Logging

Util::Logging::DEFAULT_LOG_FORMAT

Instance Method Summary collapse

Methods included from Util

#deep_copy_hash, #get_asset_or_tag, included, #require_non_empty, #require_that, #stringify_hash, #symbolize_hash

Methods included from Util::Logging

#get_logger

Instance Method Details

#all_logs(options = {}) ⇒ Object

Same as logs but for all assets

See Also:



128
129
130
131
132
133
134
135
136
137
138
139
# 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) ⇒ OpenStruct

Get a log, given its id

Parameters:

  • id (Int)

    The log id to retrieve

Returns:

  • (OpenStruct)

    The log openstruct

Raises:



145
146
147
148
149
150
151
152
# 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) ⇒ OpenStruct

Log a message against an asset using the specified level

Parameters:

  • asset_or_tag (String, Collins::Asset)
  • message (String)
  • level (Severity) (defaults to: nil)

    severity level to use

Returns:

  • (OpenStruct)

    The log struct created

Raises:



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# 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 = {}) ⇒ Array<OpenStruct>

Note:

To exclude a level via a filter it must be prepended with a ‘!`

Fetch logs for an asset according to the options specified

Examples:

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

Parameters:

  • asset_or_tag (String, Collins::Asset)
  • options (Hash) (defaults to: {})

    query options

Options Hash (options):

  • :page (Fixnum) — default: 0

    Page of results

  • :size (Fixnum) — default: 25

    Number of results to retrieve

  • :sort (String) — default: DESC

    Sort ordering for results

  • :filter (String)

    Semicolon separated list of severity levels to include or exclude

  • :all_tag (String)

    If specified, and asset tag is set to :all_tag, proxy to the all_logs method

Returns:

  • (Array<OpenStruct>)

    Array of log objects

Raises:



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# 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 = {}) ⇒ Object

new solr interface



112
113
114
115
116
117
118
119
120
121
122
123
124
# 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