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
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/manageiq/loggers/base.rb', line 12
def initialize(*_, **_)
super
self.level = INFO
self.formatter = Formatter.new
@write_lock = Mutex.new
@local_levels = {}
end
|
Instance Attribute Details
#logdev ⇒ Object
42
43
44
|
# File 'lib/manageiq/loggers/base.rb', line 42
def logdev
@logdev
end
|
Class Method Details
.log_hashes(logger, h, options = {}) ⇒ Object
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/manageiq/loggers/base.rb', line 87
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
79
80
81
|
# File 'lib/manageiq/loggers/base.rb', line 79
def self.log_hashes_filter
@log_hashes_filter ||= ["password"]
end
|
.log_hashes_filter=(filters) ⇒ Object
83
84
85
|
# File 'lib/manageiq/loggers/base.rb', line 83
def self.log_hashes_filter=(filters)
@log_hashes_filter = clean_log_hashes_filter(filters)
end
|
Instance Method Details
#level ⇒ Object
118
119
120
|
# File 'lib/manageiq/loggers/base.rb', line 118
def level
local_level || super
end
|
#log_backtrace(err, level = :error) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/manageiq/loggers/base.rb', line 57
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
113
114
115
116
|
# File 'lib/manageiq/loggers/base.rb', line 113
def log_hashes(h, options = {})
options[:filter] ||= log_hashes_filter
self.class.log_hashes(self, h, options)
end
|
#log_hashes_filter ⇒ Object
105
106
107
|
# File 'lib/manageiq/loggers/base.rb', line 105
def log_hashes_filter
@log_hashes_filter || self.class.log_hashes_filter
end
|
#log_hashes_filter=(filters) ⇒ Object
109
110
111
|
# File 'lib/manageiq/loggers/base.rb', line 109
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
33
34
35
36
37
38
39
40
|
# File 'lib/manageiq/loggers/base.rb', line 33
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
|