module Morpheus::Cli::LogsHelper
Mixin for Morpheus::Cli
command classes Provides common methods for fetching log records. The including class must establish @logs_interface, @containers_interface, @servers_interface
Public Class Methods
included(klass)
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 8 def self.included(klass) klass.send :include, Morpheus::Cli::PrintHelper end
Public Instance Methods
clusters_interface()
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 36 def clusters_interface # @api_client.clusters raise "#{self.class} has not defined @clusters_interface" if @clusters_interface.nil? @clusters_interface end
containers_interface()
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 24 def containers_interface ## @api_client.containers raise "#{self.class} has not defined @logs_interface" if @containers_interface.nil? @containers_interface end
format_log_level(val, return_color=cyan, label_width=nil)
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 109 def format_log_level(val, return_color=cyan, label_width=nil) log_level = '' display_value = val.to_s if label_width display_value = display_value.ljust(label_width, ' ') end case val when 'INFO' log_level = "#{blue}#{bold}#{display_value}#{reset}#{return_color}" when 'DEBUG' log_level = "#{white}#{bold}#{display_value}#{reset}#{return_color}" when 'WARN' log_level = "#{yellow}#{bold}#{display_value}#{reset}#{return_color}" when 'ERROR' log_level = "#{red}#{bold}#{display_value}#{reset}#{return_color}" when 'FATAL' log_level = "#{red}#{bold}#{display_value}#{reset}#{return_color}" else log_level = val end return log_level end
format_log_records(log_records, options={}, show_object=true)
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 42 def format_log_records(log_records, options={}, show_object=true) if options[:table] return format_log_table(log_records, options, show_object) end out = "" table_color = options.key?(:color) ? options[:color] : cyan term_width = current_terminal_width() message_col_width = current_terminal_width() - (show_object ? 56 : 36) if options[:reverse] log_records.reverse! end log_records.each do |log_entry| log_level = format_log_level(log_entry['level'], table_color, 6) out << table_color if table_color # out << "[#{log_entry['ts']}] #{log_level} - #{log_entry['message'].to_s.strip}" out << "#{log_level} " out << "[#{log_entry['ts']}] " if show_object log_src = "#{log_entry['typeCode']} #{log_entry['objectId']}" if options[:details] || options[:all] # log_src = "#{log_entry['typeCode']} #{log_entry['objectId']}" else log_src = truncate_string(log_src, 20) end out << "(#{log_src}) " end log_msg = "" if options[:details] || options[:all] log_msg = log_entry['message'].to_s.strip else log_msg = truncate_string(log_entry['message'].to_s.strip.gsub(/\r?\n/, " "), message_col_width) end out << "#{log_msg}" out << table_color if table_color out << "\n" end return out end
format_log_table(logs, options={}, show_object=true)
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 81 def format_log_table(logs, options={}, show_object=true) out = "" table_color = options.key?(:color) ? options[:color] : cyan term_width = current_terminal_width() message_col_width = current_terminal_width() - (show_object ? 56 : 36) log_columns = [ {"LEVEL" => lambda {|log_entry| format_log_level(log_entry['level'], table_color) } }, {"DATE" => lambda {|log_entry| log_entry['ts'] } }, {"SOURCE" => lambda {|log_entry| "#{log_entry['typeCode']} #{log_entry['objectId']}" } }, {"MESSAGE" => lambda {|log_entry| if options[:details] || options[:all] log_entry['message'].to_s.strip else truncate_string(log_entry['message'].to_s.strip.gsub(/\r?\n/, " "), message_col_width) end } } ] if show_object != true log_columns = log_columns.reject {|it| it.key?("SOURCE") } end # if options[:include_fields] # columns = options[:include_fields] # end out << as_pretty_table(logs, log_columns, options.merge(wrap:true)) # out << "\n" return out end
instances_interface()
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 18 def instances_interface # @api_client.instances raise "#{self.class} has not defined @instances_interface" if @instances_interface.nil? @instances_interface end
logs_interface()
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 12 def logs_interface # @api_client.logs raise "#{self.class} has not defined @logs_interface" if @logs_interface.nil? @logs_interface end
servers_interface()
click to toggle source
# File lib/morpheus/cli/mixins/logs_helper.rb, line 30 def servers_interface # @api_client.servers raise "#{self.class} has not defined @servers_interface" if @servers_interface.nil? @servers_interface end