Class: Central::Cli::Apps::LogsCommand
- Inherits:
-
Clamp::Command
- Object
- Clamp::Command
- Central::Cli::Apps::LogsCommand
- Includes:
- Common, Common, StackOptions
- Defined in:
- lib/central/cli/apps/logs_command.rb
Instance Attribute Summary collapse
-
#service_prefix ⇒ Object
readonly
Returns the value of attribute service_prefix.
-
#services ⇒ Object
readonly
Returns the value of attribute services.
Instance Method Summary collapse
- #color_for_container(container_id) ⇒ Object
- #color_maps ⇒ Object
- #colors ⇒ Object
- #execute ⇒ Object
- #show_logs(services) ⇒ Object
Methods included from Common
#app_json, #create_yml, #current_dir, #extend_env_vars, #extend_options, #extend_secrets, #load_services, #normalize_env_vars, #parse_services, #prefixed_name, #require_config_file, #service_exists?, #token, #valid_addons
Methods included from Services::ServicesHelper
#create_service, #delete_service, #deploy_service, #get_service, #int_to_filesize, #parse_image, #parse_links, #parse_log_opts, #parse_memory, #parse_ports, #parse_relative_time, #parse_secrets, #parse_service_id, #restart_service, #scale_service, #show_service, #start_service, #stop_service, #update_service, #wait_for_deploy_to_finish
Methods included from Common
#access_token=, #add_master, #api_url, #api_url=, #clear_current_stack, #client, #current_master, #current_master=, #current_master_index, #current_stack, #current_stack=, #ensure_custom_ssl_ca, #require_api_url, #require_current_stack, #require_token, #reset_client, #save_settings, #settings, #settings_filename
Methods included from StackOptions
Instance Attribute Details
#service_prefix ⇒ Object (readonly)
Returns the value of attribute service_prefix.
16 17 18 |
# File 'lib/central/cli/apps/logs_command.rb', line 16 def service_prefix @service_prefix end |
#services ⇒ Object (readonly)
Returns the value of attribute services.
16 17 18 |
# File 'lib/central/cli/apps/logs_command.rb', line 16 def services @services end |
Instance Method Details
#color_for_container(container_id) ⇒ Object
59 60 61 62 |
# File 'lib/central/cli/apps/logs_command.rb', line 59 def color_for_container(container_id) color_maps[container_id] = colors.shift unless color_maps[container_id] color_maps[container_id].to_sym end |
#color_maps ⇒ Object
64 65 66 |
# File 'lib/central/cli/apps/logs_command.rb', line 64 def color_maps @color_maps ||= {} end |
#colors ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/central/cli/apps/logs_command.rb', line 68 def colors if @colors.nil? || @colors.size == 0 @colors = [:green, :magenta, :yellow, :cyan, :red, :light_green, :light_yellow, :ligh_magenta, :light_cyan, :light_red] end @colors end |
#execute ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/central/cli/apps/logs_command.rb', line 18 def execute require_config_file(filename) @service_prefix = project_name || current_dir @services = load_services(filename, service_list, service_prefix) if services.size > 0 show_logs(services) elsif !service_list.empty? puts "No such service: #{service_list.join(', ')}".colorize(:red) end end |
#show_logs(services) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/central/cli/apps/logs_command.rb', line 30 def show_logs(services) last_id = nil loop do query_params = [] query_params << "from=#{last_id}" unless last_id.nil? query_params << "limit=#{lines}" query_params << "since=#{since}" if !since.nil? && last_id.nil? logs = [] services.each do |service_name, _opts| service = begin get_service(token, prefixed_name(service_name)) rescue false end result = client(token).get("services/#{service['id']}/container_logs?#{query_params.join('&')}") if service logs += result['logs'] if result && result['logs'] end logs.sort! { |x, y| DateTime.parse(x['created_at']) <=> DateTime.parse(y['created_at']) } logs.each do |log| color = color_for_container(log['name']) prefix = "#{log['created_at']} #{log['name']}:".colorize(color) puts "#{prefix} #{log['data']}" last_id = log['id'] end break unless tail? sleep(2) end end |