9 #include "wvlogbuffer.h"
13 WvLogBuffer::Msg::Msg(WvLog::LogLevel _level, WvStringParm _source,
14 WvString _message) : level(_level), source(_source), message(_message)
21 list.append(msg,
false);
24 if (list.count() > (
size_t)max)
26 Msg* killme = list.first();
35 WvLogBuffer::WvLogBuffer(
int _max_lines, WvLog::LogLevel _max_level) :
38 max_lines = _max_lines;
42 WvLogBuffer::~WvLogBuffer()
50 current.put(str, len);
53 void WvLogBuffer::handle_msg(Msg *lastmsg)
56 msgs.append(lastmsg,
true);
60 MsgCounter* msgcounter = counters[type];
64 msgcounter =
new MsgCounter(type);
65 counters.add(msgcounter,
true);
68 Msg* killme = msgcounter->add(lastmsg, max_lines);
77 if (last_level < WvLog::NUM_LOGLEVELS)
80 Msg *lastmsg =
new Msg(last_level, last_source,
89 void WvLogBuffer::feed_receiver(
WvLogRcv& receiver)
91 WvLogBuffer::MsgList::Iter i(msgs);
96 receiver.log(msg.source, msg.level,
97 msg.message.
cstr(), msg.message.len());
104 MsgList::Iter i(messages());
106 for (i.rewind(); i.next(); )
109 s.print(
"%s %s<%s>: %s+\n",
110 m.timestamp, m.source, loglevels[m.level], m.message);