vaguerent/lib/vagrant/util/logging_formatter.rb
2022-04-25 12:25:59 -05:00

47 lines
1.2 KiB
Ruby

require "vagrant/util/credential_scrubber"
require "log4r/formatter/formatter"
module Vagrant
module Util
# Wrapper for logging formatting to provide
# information scrubbing prior to being written
# to output target
class LoggingFormatter < Log4r::BasicFormatter
# @return [Log4r::PatternFormatter]
attr_reader :formatter
# Creates a new formatter wrapper instance.
#
# @param [Log4r::Formatter]
def initialize(formatter)
@formatter = formatter
end
# Format event and scrub output
def format(event)
msg = formatter.format(event)
CredentialScrubber.desensitize(msg)
end
end
class HCLogFormatter < Log4r::BasicFormatter
def format(event)
d = {
"@timestamp" => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%6N%:z"),
"@level" => Log4r::LNAMES[event.level].downcase,
"@module" => event.fullname.gsub("::", "."),
"@message" => format_object(event.data),
}
d["@caller"] = event.tracer[0] if event.tracer
# TODO(spox): fix this with force encoding on the message
begin
d.to_json + "\n"
rescue
end
end
end
end
end