-
Notifications
You must be signed in to change notification settings - Fork 896
/
loggers.rb
97 lines (83 loc) · 4.2 KB
/
loggers.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
require 'util/vmdb-logger'
Dir.glob(File.join(File.dirname(__FILE__), "loggers", "*")).each { |f| require f }
module Vmdb
def self.logger
$log
end
def self.null_logger
@null_logger ||= Loggers::NullLogger.new
end
def self.rails_logger
$rails_log
end
module Loggers
def self.init
return if @initialized
create_loggers
@initialized = true
end
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, $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)
end
private
def self.create_loggers
# Intentionally setting false to enable logging so we can
# diagnose an Automate method failure
if false && ENV.key?("CI")
$log = $rails_log = $audit_log = $fog_log = $policy_log = $vim_log = $rhevm_log = Vmdb.null_logger
$aws_log = $kube_log = $mw_log = $scvmm_log = $api_log = $miq_ae_logger = $websocket_log = Vmdb.null_logger
$azure_log = $lenovo_log = Vmdb.null_logger
else
path_dir = Rails.root.join("log")
$log = VMDBLogger.new(path_dir.join("evm.log"))
$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"), "<PolicyEngine> ")
$vim_log = MirroredLogger.new(path_dir.join("vim.log"), "<VIM> ")
$rhevm_log = MirroredLogger.new(path_dir.join("rhevm.log"), "<RHEVM> ")
$aws_log = MirroredLogger.new(path_dir.join("aws.log"), "<AWS> ")
$lenovo_log = MirroredLogger.new(path_dir.join("lenovo.log"), "<LENOVO> ")
$kube_log = MirroredLogger.new(path_dir.join("kubernetes.log"), "<KUBERNETES> ")
$mw_log = MirroredLogger.new(path_dir.join("middleware.log"), "<MIDDLEWARE> ")
$scvmm_log = MirroredLogger.new(path_dir.join("scvmm.log"), "<SCVMM> ")
$azure_log = MirroredLogger.new(path_dir.join("azure.log"), "<AZURE> ")
$api_log = MirroredLogger.new(path_dir.join("api.log"), "<API> ")
$websocket_log = MirroredLogger.new(path_dir.join("websocket.log"), "<WEBSOCKET> ")
$miq_ae_logger = MirroredLogger.new(path_dir.join("automation.log"), "<AutomationEngine> ")
$miq_ae_logger.mirror_level = VMDBLogger::INFO
end
configure_external_loggers
end
def self.configure_external_loggers
require 'awesome_spawn'
AwesomeSpawn.logger = $log
end
private_class_method :configure_external_loggers
def self.apply_config_value(config, logger, key, mirror_key = nil)
return if logger.kind_of?(Vmdb::Loggers::NullLogger)
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)
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)
end
end
end
end