semlogger/lib/slogger/writer.rb

39 lines
968 B
Ruby

class Slogger::Output
end
class Slogger::Writer < Slogger::Output
def initialize logdev = nil
@logdev = logdev || ::Slogger::Rotate.new( ::Rails.root.join( 'log', ::Rails.env).to_s.gsub('%', '%%') + '.%Y-%m-%d.%$.log')
end
def add severity, time, progname, data, tags, message
@logdev.write [severity, time, progname, data, tags, message].to_json
end
end
class Slogger::Printer < Slogger::Output
def initialize logdev = nil
@logdev = logdev || $stdout
@last_reqid = nil
end
def add severity, time, progname, data, tags, message
line = case message[0]
when :exception
ex = message[1]
r = "Exception: #{message[2]} (#{message[1]}"
r << "\n\t" << message[3].join( "\n\t") if message[3]
r
when String, Numeric, true, false, nil then message[0]
when :obj then message[1].inspect
else message.inspect
end
reqid = data[:reqid]
unless @last_reqid == reqid
@last_reqid = reqid
puts "\n"
end
puts line
end
end