module Collins::Api::Logging
Public Instance Methods
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 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 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
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
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
# 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