diff --git a/config/settings.yml b/config/settings.yml index 5c9b240fe7d..a4ae0ac7e1b 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -856,23 +856,14 @@ :level: info :level_rails: info :level_lenovo: info - :level_lenovo_in_evm: error :level_mw: info - :level_mw_in_evm: error :level_kube: info - :level_kube_in_evm: error :level_api: info - :level_api_in_evm: error :level_fog: info - :level_fog_in_evm: error :level_rhevm: info - :level_rhevm_in_evm: error :level_scvmm: info - :level_scvmm_in_evm: error :level_vim: warn - :level_vim_in_evm: error :level_websocket: info - :level_websocket_in_evm: error :performance: :capture_threshold: :default: 10.minutes diff --git a/db/migrate/20170619170148_remove_mirrored_logger_settings.rb b/db/migrate/20170619170148_remove_mirrored_logger_settings.rb new file mode 100644 index 00000000000..643aec7379a --- /dev/null +++ b/db/migrate/20170619170148_remove_mirrored_logger_settings.rb @@ -0,0 +1,10 @@ +class RemoveMirroredLoggerSettings < ActiveRecord::Migration[5.0] + class SettingsChange < ActiveRecord::Base + end + + def up + say_with_time("Remove MirroredLogger settings") do + SettingsChange.where("key LIKE ?", "/log/level_%_in_evm").delete_all + end + end +end diff --git a/lib/vmdb/loggers.rb b/lib/vmdb/loggers.rb index 99e9c9e619a..582693868d5 100644 --- a/lib/vmdb/loggers.rb +++ b/lib/vmdb/loggers.rb @@ -21,18 +21,18 @@ def self.init def self.apply_config(config) apply_config_value(config, $log, :level) apply_config_value(config, $rails_log, :level_rails) - apply_config_value(config, $vim_log, :level_vim, :level_vim_in_evm) - apply_config_value(config, $rhevm_log, :level_rhevm, :level_rhevm_in_evm) - apply_config_value(config, $aws_log, :level_aws, :level_aws_in_evm) - apply_config_value(config, $kube_log, :level_kube, :level_kube_in_evm) - apply_config_value(config, $mw_log, :level_mw, :level_mw_in_evm) - apply_config_value(config, $datawarehouse_log, :level_datawarehouse, :level_datawarehouse_in_evm) - apply_config_value(config, $scvmm_log, :level_scvmm, :level_scvmm_in_evm) - apply_config_value(config, $api_log, :level_api, :level_api_in_evm) - apply_config_value(config, $fog_log, :level_fog, :level_fog_in_evm) - apply_config_value(config, $azure_log, :level_azure, :level_azure_in_evm) - apply_config_value(config, $lenovo_log, :level_lenovo, :level_lenovo_in_evm) - apply_config_value(config, $websocket_log, :level_websocket, :level_websocket_in_evm) + apply_config_value(config, $vim_log, :level_vim) + apply_config_value(config, $rhevm_log, :level_rhevm) + apply_config_value(config, $aws_log, :level_aws) + apply_config_value(config, $kube_log, :level_kube) + apply_config_value(config, $mw_log, :level_mw) + apply_config_value(config, $datawarehouse_log, :level_datawarehouse) + apply_config_value(config, $scvmm_log, :level_scvmm) + apply_config_value(config, $api_log, :level_api) + apply_config_value(config, $fog_log, :level_fog) + apply_config_value(config, $azure_log, :level_azure) + apply_config_value(config, $lenovo_log, :level_lenovo) + apply_config_value(config, $websocket_log, :level_websocket) end private @@ -44,20 +44,19 @@ def self.create_loggers $rails_log = VMDBLogger.new(path_dir.join("#{Rails.env}.log")) $audit_log = AuditLogger.new(path_dir.join("audit.log")) $fog_log = FogLogger.new(path_dir.join("fog.log")) - $policy_log = MirroredLogger.new(path_dir.join("policy.log"), " ") - $vim_log = MirroredLogger.new(path_dir.join("vim.log"), " ") - $rhevm_log = MirroredLogger.new(path_dir.join("rhevm.log"), " ") - $aws_log = MirroredLogger.new(path_dir.join("aws.log"), " ") - $lenovo_log = MirroredLogger.new(path_dir.join("lenovo.log"), " ") - $kube_log = MirroredLogger.new(path_dir.join("kubernetes.log"), " ") - $mw_log = MirroredLogger.new(path_dir.join("middleware.log"), " ") - $datawarehouse_log = MirroredLogger.new(path_dir.join("datawarehouse.log"), " ") - $scvmm_log = MirroredLogger.new(path_dir.join("scvmm.log"), " ") - $azure_log = MirroredLogger.new(path_dir.join("azure.log"), " ") - $api_log = MirroredLogger.new(path_dir.join("api.log"), " ") - $websocket_log = MirroredLogger.new(path_dir.join("websocket.log"), " ") - $miq_ae_logger = MirroredLogger.new(path_dir.join("automation.log"), " ") - $miq_ae_logger.mirror_level = VMDBLogger::INFO + $policy_log = VMDBLogger.new(path_dir.join("policy.log")) + $vim_log = VMDBLogger.new(path_dir.join("vim.log")) + $rhevm_log = VMDBLogger.new(path_dir.join("rhevm.log")) + $aws_log = VMDBLogger.new(path_dir.join("aws.log")) + $lenovo_log = VMDBLogger.new(path_dir.join("lenovo.log")) + $kube_log = VMDBLogger.new(path_dir.join("kubernetes.log")) + $mw_log = VMDBLogger.new(path_dir.join("middleware.log")) + $datawarehouse_log = VMDBLogger.new(path_dir.join("datawarehouse.log")) + $scvmm_log = VMDBLogger.new(path_dir.join("scvmm.log")) + $azure_log = VMDBLogger.new(path_dir.join("azure.log")) + $api_log = VMDBLogger.new(path_dir.join("api.log")) + $websocket_log = VMDBLogger.new(path_dir.join("websocket.log")) + $miq_ae_logger = VMDBLogger.new(path_dir.join("automation.log")) configure_external_loggers end @@ -69,18 +68,14 @@ def self.configure_external_loggers private_class_method :configure_external_loggers - def self.apply_config_value(config, logger, key, mirror_key = nil) - apply_config_value_logged(config, logger, :level, key) - apply_config_value_logged(config, logger, :mirror_level, mirror_key) if mirror_key - end - def self.apply_config_value_logged(config, logger, level_method, key) - old_level = logger.send(level_method) + def self.apply_config_value(config, logger, key) + old_level = logger.level new_level_name = (config[key] || "INFO").to_s.upcase new_level = VMDBLogger.const_get(new_level_name) if old_level != new_level $log.info("MIQ(#{name}.apply_config) Log level for #{File.basename(logger.filename)} has been changed to [#{new_level_name}]") - logger.send("#{level_method}=", new_level) + logger.level = new_level end end end diff --git a/lib/vmdb/loggers/fog_logger.rb b/lib/vmdb/loggers/fog_logger.rb index 95f607675d1..56a2c332088 100644 --- a/lib/vmdb/loggers/fog_logger.rb +++ b/lib/vmdb/loggers/fog_logger.rb @@ -1,11 +1,5 @@ -require 'vmdb/loggers/mirrored_logger' - module Vmdb::Loggers - class FogLogger < MirroredLogger - def initialize(path) - super(path, " ") - end - + class FogLogger < VMDBLogger # To be used as Excon's request logger, the logger must respond to # #instrument as in ActiveSupport::Notifications. # Implementation derived from Excon::StandardInstrumentor diff --git a/lib/vmdb/loggers/mirrored_logger.rb b/lib/vmdb/loggers/mirrored_logger.rb deleted file mode 100644 index 3c8057dfaa4..00000000000 --- a/lib/vmdb/loggers/mirrored_logger.rb +++ /dev/null @@ -1,41 +0,0 @@ -module Vmdb::Loggers - class MirroredLogger < VMDBLogger - attr_accessor :mirror_logger, :mirror_prefix, :mirror_level - - def initialize(logdev, mirror_prefix, shift_age = 0, shift_size = 1048576) - super(logdev, shift_age, shift_size) - - self.mirror_prefix = mirror_prefix - self.mirror_level = ERROR - self.mirror_logger = $log if $log - end - - def mirror?(severity) - severity >= mirror_level - end - - def add(*args, &block) - add_to_mirror(*args, &block) - super - end - - private - - def add_to_mirror(severity, message = nil, progname = nil, &_block) - return unless mirror_logger && mirror?(severity) - - # The following lines of code are copied from Logger#add - mirror_progname = progname || @progname - if message.nil? - if block_given? - mirror_message = yield - else - mirror_message = mirror_progname - mirror_progname = @progname - end - end - - mirror_logger.add(severity, "#{mirror_prefix}#{mirror_message}", mirror_progname) - end - end -end diff --git a/spec/lib/vmdb/loggers/mirrored_logger_spec.rb b/spec/lib/vmdb/loggers/mirrored_logger_spec.rb deleted file mode 100644 index 0eb4d41a2ef..00000000000 --- a/spec/lib/vmdb/loggers/mirrored_logger_spec.rb +++ /dev/null @@ -1,53 +0,0 @@ -describe Vmdb::Loggers::MirroredLogger do - before(:each) do - @mirror_stream = StringIO.new - @log_stream = StringIO.new - @log = Vmdb::Loggers::MirroredLogger.new(@log_stream, " ") - @log.mirror_logger = VMDBLogger.new(@mirror_stream) - end - - { - :debug => {:debug => true, :info => true, :warn => true, :error => true, :fatal => true}, - :info => {:debug => false, :info => true, :warn => true, :error => true, :fatal => true}, - :warn => {:debug => false, :info => false, :warn => true, :error => true, :fatal => true}, - :error => {:debug => false, :info => false, :warn => false, :error => true, :fatal => true}, - :fatal => {:debug => false, :info => false, :warn => false, :error => false, :fatal => true} - }.each do |mirror_level, cases| - context "with mirror level set to #{mirror_level.to_s.upcase}" do - before(:each) do - @log.mirror_level = VMDBLogger.const_get(mirror_level.to_s.upcase) - - # Set test logs to DEBUG, so no messages are supressed except by the mirror_level - @log.level = @log.mirror_logger.level = VMDBLogger::DEBUG - end - - cases.each do |level, mirrored| - it "##{level}" do - @log.send(level, "Testing!") - - @log_stream.rewind - lines = @log_stream.each_line.to_a - expect(lines.length).to eq(1) - line = lines.first.chomp - expect(line[7, 1]).to eq(level.to_s[0, 1].upcase) - expect(line[-13..-1]).to eq("-- : Testing!") - - @mirror_stream.rewind - lines = @mirror_stream.each_line.to_a - if mirrored - expect(lines.length).to eq(1) - line = lines.first.chomp - expect(line[7, 1]).to eq(level.to_s[0, 1].upcase) - expect(line[-28..-1]).to eq("-- : Testing!") - else - expect(lines.length).to eq(0) - end - end - - it "#mirror?(#{level.to_s.upcase})" do - expect(@log.mirror?(VMDBLogger.const_get(level.to_s.upcase))).to eq(mirrored) - end - end - end - end -end diff --git a/spec/migrations/20170619170148_remove_mirrored_logger_settings_spec.rb b/spec/migrations/20170619170148_remove_mirrored_logger_settings_spec.rb new file mode 100644 index 00000000000..1e847ef85d4 --- /dev/null +++ b/spec/migrations/20170619170148_remove_mirrored_logger_settings_spec.rb @@ -0,0 +1,18 @@ +require_migration + +describe RemoveMirroredLoggerSettings do + let(:settings_change_stub) { migration_stub(:SettingsChange) } + + migration_context :up do + it "removes the MirroredLogger settings but leaves others" do + removed = settings_change_stub.create!(:key => "/log/level_kube_in_evm", :value => "info") + settings_change_stub.create!(:key => "/log/level", :value => "debug") + settings_change_stub.create!(:key => "/log/level_kube", :value => "debug") + + migrate + + expect(settings_change_stub.count).to eq 2 + expect { removed.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end +end