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 
13 namespace Eris
14 {
15 
16 static LogLevel _logLevel = DEFAULT_LOG;
17 sigc::signal<void, LogLevel, const std::string&> Logged;
18 
20 {
21  _logLevel = lvl;
22 }
23 
24 LogLevel getLogLevel()
25 {
26  return _logLevel;
27 }
28 
29 void doLog(LogLevel lvl, const std::string& msg)
30 {
31  if (lvl <= _logLevel)
32  Logged.emit(lvl, msg);
33 }
34 
35 std::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 
44 std::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