39 lines
743 B
Ruby
39 lines
743 B
Ruby
class Slogger::Formatter < ::Logger::Formatter
|
|
def initialize tags, data
|
|
@tags, @data = tags, data
|
|
end
|
|
|
|
def obj2ser obj
|
|
case obj
|
|
when Proc then obj.call
|
|
else obj
|
|
end
|
|
end
|
|
|
|
def tags2list tags
|
|
tags = tags ? tags.dup : []
|
|
tags.map &method( :obj2ser)
|
|
end
|
|
|
|
def data2ser data
|
|
data = data ? data.dup : {}
|
|
data.each {|k,v| data[k] = obj2ser v }
|
|
end
|
|
|
|
def entry severity, time, progname, msg, tags, data
|
|
e = {
|
|
lvl: severity,
|
|
ts: time,
|
|
}
|
|
e[:prog] = progname if progname
|
|
e[:tags] = tags if tags and not tags.empty?
|
|
e[:data] = data if data and not data.empty?
|
|
e[:msg] = msg
|
|
e
|
|
end
|
|
|
|
def call severity, time, progname, msg
|
|
[severity, time.xmlschema(9), progname, msg, tags, data].to_json + "\n"
|
|
end
|
|
end
|