eris 1.4.0
A WorldForge client library.
Log.cpp
1#ifdef HAVE_CONFIG_H
2 #include "config.h"
3#endif
4
5#include "Log.h"
6
7#include <Atlas/Message/MEncoder.h>
8#include <Atlas/Objects/Operation.h>
9#include <Atlas/Objects/Root.h>
10#include <Atlas/Objects/Encoder.h>
11#include <Atlas/PresentationBridge.h>
12
13namespace Eris
14{
15
16static LogLevel _logLevel = DEFAULT_LOG;
17sigc::signal<void, LogLevel, const std::string&> Logged;
18
20{
21 _logLevel = lvl;
22}
23
24LogLevel getLogLevel()
25{
26 return _logLevel;
27}
28
29void doLog(LogLevel lvl, const std::string& msg)
30{
31 if (lvl <= _logLevel)
32 Logged.emit(lvl, msg);
33}
34
35std::ostream& operator<<(std::ostream& os, const Atlas::Objects::Root& obj)
36{
37 std::stringstream s;
38 Atlas::PresentationBridge bridge(s);
39 Atlas::Objects::ObjectsEncoder debugEncoder(bridge);
40 debugEncoder.streamObjectsMessage(obj);
41 return os << s.str();
42}
43
44std::ostream& operator<<(std::ostream& os, const Atlas::Message::Element& msg)
45{
46 if (msg.isMap()) {
47 std::stringstream s;
48 Atlas::PresentationBridge bridge(s);
49 Atlas::Message::Encoder debugEncoder(bridge);
50 debugEncoder.streamMessageElement(msg.Map());
51 return os << s.str();
52 }
53 return os;
54}
55
56} // of namespace
Definition: Account.cpp:33
void setLogLevel(LogLevel lvl)
Definition: Log.cpp:19
const LogLevel DEFAULT_LOG
the default logging level for a new connection
Definition: Log.h:21
sigc::signal< void, LogLevel, const std::string & > Logged
Definition: Log.cpp:17
LogLevel
Definition: Log.h:12