29 #include <arcs/arcslog.h>
40 QDataStream &operator<< (QDataStream &out,
const ARCSLogEvent & event)
42 out <<
event.getSource() <<
event.getLevel() <<
event.getMessage() <<
"\n" ;
46 QDataStream &operator>> (QDataStream &in,
ARCSLogEvent & event)
51 in >> src >> lvl >> msg;
59 void ARCSColorLog::log(std::ostream &)
const
63 void ARCSColorLog::log(QTextStream &)
const
71 WORD ARCSWindowsColorLog::getNormalAttribute()
73 CONSOLE_SCREEN_BUFFER_INFO csbi;
74 GetConsoleScreenBufferInfo (GetStdHandle(STD_OUTPUT_HANDLE),&csbi);
75 return csbi.wAttributes;
78 WORD ARCSWindowsColorLog::normalAttribute= ARCSWindowsColorLog::getNormalAttribute();
79 WORD ARCSWindowsColorLog::attributes[] = { normalAttribute ,
80 FOREGROUND_GREEN|FOREGROUND_INTENSITY,
81 FOREGROUND_BLUE|FOREGROUND_INTENSITY,
82 FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY,
83 FOREGROUND_RED|FOREGROUND_INTENSITY };
85 void ARCSWindowsColorLog::log(std::ostream& os)
const
89 hd = GetStdHandle(STD_OUTPUT_HANDLE);
91 hd = GetStdHandle(STD_ERROR_HANDLE);
92 SetConsoleTextAttribute(hd,attributes[getColor()]);
95 #define ARCSConsoleColorLog ARCSWindowsColorLog
98 const char* ARCSUnixColorLog::normalAttribute=
"\033[0m";
99 const char* ARCSUnixColorLog::attributes[] = { normalAttribute,
"\033[32;1m",
"\033[34;1m",
"\033[33;1m",
"\033[31;1m" };
101 void ARCSUnixColorLog::log(std::ostream& os)
const {
102 os << attributes[getColor()];
105 #define ARCSConsoleColorLog ARCSUnixColorLog
109 const char* ARCSHTMLColorLog::normalAttribute=
"</font>";
110 const char* ARCSHTMLColorLog::attributes[] = { normalAttribute,
"<font color=\"green\">",
"<font color=\"blue\">",
"<font color=\"orange\">",
111 "<font color=\"red\">"};
113 void ARCSHTMLColorLog::log(std::ostream& os)
const {
114 os << attributes[getColor()];
117 void ARCSHTMLColorLog::log(QTextStream& ts)
const {
118 ts << attributes[getColor()];
121 std::ostream& operator<<(std::ostream& os,
const ARCSColorLog& cl)
124 if (os.rdbuf() != std::cout.rdbuf() && os.rdbuf() != std::cerr.rdbuf())
131 QTextStream& operator<<(QTextStream& ts,
const ARCSColorLog& cl)
141 ARCSLog* ARCSLog::instance = 0;
143 const char* ARCSLog::interp[] = {
"NOR",
"INF",
"WRN" ,
"ERR" ,
"CRT" };
155 void ARCSLog::refreshMode()
158 for (
int i=0; i < 5; i++)
161 if (logMode == CONSOLE)
163 levels[0] =
new ARCSConsoleColorLog(ARCSColorLog::NORMAL);
164 levels[1] =
new ARCSConsoleColorLog(ARCSColorLog::GREEN);
165 levels[2] =
new ARCSConsoleColorLog(ARCSColorLog::BLUE);
166 levels[3] =
new ARCSConsoleColorLog(ARCSColorLog::YELLOW);
167 levels[4] =
new ARCSConsoleColorLog(ARCSColorLog::RED);
199 logEvents.append(evt);
204 QTextStream & t = *textStream ;
216 std::cerr << *levels[evt.
getLevel()]
221 std::cout << *levels[evt.
getLevel()]
ARCSLogEvent(QString src=QString::null, Level lvl=NONE, QString msg=QString::null)
Constructor of the event.
QString getSource() const
returns the source of the event
General purpose logging class.
class that describes a log event
for informational purpose
Level getLevel() const
returns the criticality level of the event
QString getMessage() const
returns the message associated to the event
static ARCSLog * getInstance()
returns the only instance of the logging system that is available
specialized log colorizer for html output
generic class for coloring log event