Class: ManageIQ::Loggers::Base
- Inherits:
-
Logger
- Object
- Logger
- ManageIQ::Loggers::Base
show all
- Defined in:
- lib/manageiq/loggers/base.rb
Defined Under Namespace
Classes: Formatter
Constant Summary
collapse
- MAX_LOG_LINE_LENGTH =
8.kilobytes
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(*_, **_) ⇒ Base
Returns a new instance of Base.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/manageiq/loggers/base.rb', line 13
def initialize(*_, **_)
super
self.level = INFO
self.formatter = Formatter.new
@write_lock = Mutex.new
@local_levels = {}
end
|
Instance Attribute Details
#logdev ⇒ Object
43
44
45
|
# File 'lib/manageiq/loggers/base.rb', line 43
def logdev
@logdev
end
|
Class Method Details
.log_hashes(logger, h, options = {}) ⇒ Object
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/manageiq/loggers/base.rb', line 88
def self.log_hashes(logger, h, options = {})
require 'yaml'
require 'manageiq/password'
level = options[:log_level] || :info
filter = options[:filter] ? clean_log_hashes_filter(options[:filter]) : log_hashes_filter
values = YAML.dump(h.to_hash).gsub(ManageIQ::Password::REGEXP, "[FILTERED]")
values = values.split("\n").map do |l|
if (key = filter.detect { |f| l.include?(f) })
l.gsub!(/#{key}.*: (.+)/) { |m| m.gsub!($1, "[FILTERED]") }
end
l
end.join("\n")
logger.send(level, "\n#{values}")
end
|
.log_hashes_filter ⇒ Object
80
81
82
|
# File 'lib/manageiq/loggers/base.rb', line 80
def self.log_hashes_filter
@log_hashes_filter ||= ["password"]
end
|
.log_hashes_filter=(filters) ⇒ Object
84
85
86
|
# File 'lib/manageiq/loggers/base.rb', line 84
def self.log_hashes_filter=(filters)
@log_hashes_filter = clean_log_hashes_filter(filters)
end
|
Instance Method Details
#level ⇒ Object
119
120
121
|
# File 'lib/manageiq/loggers/base.rb', line 119
def level
local_level || super
end
|
#log_backtrace(err, level = :error) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/manageiq/loggers/base.rb', line 58
def log_backtrace(err, level = :error)
method_name = nil
caller.each do |c|
method_name = c[/`([^']*)'/, 1]
break unless method_name == 'log_backtrace'
end
send(level, "[#{err.class.name}]: #{err.message} Method:[#{method_name}]")
unless (Object.const_defined?(:MiqException) && err.kind_of?(MiqException::Error)) ||
(Object.const_defined?(:MiqAeException) && err.kind_of?(MiqAeException::Error))
send(level, err.backtrace.nil? || err.backtrace.empty? ? "Backtrace is not available" : err.backtrace.join("\n"))
end
end
|
#log_hashes(h, options = {}) ⇒ Object
114
115
116
117
|
# File 'lib/manageiq/loggers/base.rb', line 114
def log_hashes(h, options = {})
options[:filter] ||= log_hashes_filter
self.class.log_hashes(self, h, options)
end
|
#log_hashes_filter ⇒ Object
106
107
108
|
# File 'lib/manageiq/loggers/base.rb', line 106
def log_hashes_filter
@log_hashes_filter || self.class.log_hashes_filter
end
|
#log_hashes_filter=(filters) ⇒ Object
110
111
112
|
# File 'lib/manageiq/loggers/base.rb', line 110
def log_hashes_filter=(filters)
@log_hashes_filter = self.class.send(:clean_log_hashes_filter, filters)
end
|
#silence(temporary_level = Logger::ERROR) ⇒ Object
Silences the logger for the duration of the block.
Taken from activesupport/logger_silence
34
35
36
37
38
39
40
41
|
# File 'lib/manageiq/loggers/base.rb', line 34
def silence(temporary_level = Logger::ERROR)
old_local_level = local_level
self.local_level = temporary_level
yield self
ensure
self.local_level = old_local_level
end
|