Better logging
This commit is contained in:
parent
46695c8aab
commit
ac8db32552
@ -20,7 +20,7 @@ void Connection::onConnect() {}
|
|||||||
|
|
||||||
void Connection::onDisconnect(gloox::ConnectionError e) {}
|
void Connection::onDisconnect(gloox::ConnectionError e) {}
|
||||||
|
|
||||||
bool Connection::onTLSConnect(const gloox::CertInfo&) {
|
bool Connection::onTLSConnect(const gloox::CertInfo& info) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
78
logger.cpp
78
logger.cpp
@ -4,6 +4,79 @@
|
|||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
|
static constexpr std::string_view logLevelMap[] = {
|
||||||
|
"DEBUG", // 0
|
||||||
|
"WARNING", // 1
|
||||||
|
"ERROR", // 2
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr std::string_view colorMap[] = {
|
||||||
|
"\033[32m", // DEBUG (Green)
|
||||||
|
"\033[33m", // WARNING (Yellow)
|
||||||
|
"\033[31m", // ERROR (Red)
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr std::string_view clear = "\033[0m";
|
||||||
|
static constexpr std::string_view bold = "\033[1m";
|
||||||
|
|
||||||
|
void writeTimestamp() {
|
||||||
|
std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
|
||||||
|
std::time_t time_now = std::chrono::system_clock::to_time_t(now);
|
||||||
|
std::tm local_time = *std::localtime(&time_now);
|
||||||
|
std::chrono::milliseconds millis = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) % 1000;
|
||||||
|
|
||||||
|
std::cout << "\033[90m" << std::put_time(&local_time, "%Y-%m-%d %H:%M:%S");
|
||||||
|
std::cout << "." << std::setfill('0') << std::setw(3) << millis.count();
|
||||||
|
std::cout << clear << ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr std::string_view getLogLevel(gloox::LogLevel level) {
|
||||||
|
return (level >= 0 && level < 3) ? logLevelMap[level] : "UNKNOWN";
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr std::string_view getColor(gloox::LogLevel level) {
|
||||||
|
return (level >= 0 && level < 3) ? colorMap[level] : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeTags(gloox::LogArea area) {
|
||||||
|
if (area & gloox::LogAreaClassParser)
|
||||||
|
std::cout << " [Parser]";
|
||||||
|
if (area & gloox::LogAreaClassConnectionTCPBase)
|
||||||
|
std::cout << " [Connection]";
|
||||||
|
if (area & gloox::LogAreaClassClient)
|
||||||
|
std::cout << " [Client]";
|
||||||
|
if (area & gloox::LogAreaClassClientbase)
|
||||||
|
std::cout << " [Client Base]";
|
||||||
|
if (area & gloox::LogAreaClassComponent)
|
||||||
|
std::cout << " [Component]";
|
||||||
|
if (area & gloox::LogAreaClassDns)
|
||||||
|
std::cout << " [DNS]";
|
||||||
|
if (area & gloox::LogAreaClassConnectionHTTPProxy)
|
||||||
|
std::cout << " [HTTP Proxy]";
|
||||||
|
if (area & gloox::LogAreaClassConnectionSOCKS5Proxy)
|
||||||
|
std::cout << " [SOCKS5 Proxy]";
|
||||||
|
if (area & gloox::LogAreaClassConnectionTCPClient)
|
||||||
|
std::cout << " [TCP Client]";
|
||||||
|
if (area & gloox::LogAreaClassConnectionTCPServer)
|
||||||
|
std::cout << " [TCP Server]";
|
||||||
|
if (area & gloox::LogAreaClassS5BManager)
|
||||||
|
std::cout << " [SOCKS5 Bytestream Manager]";
|
||||||
|
if (area & gloox::LogAreaClassSOCKS5Bytestream)
|
||||||
|
std::cout << " [SOCKS5 Bytestream]";
|
||||||
|
if (area & gloox::LogAreaLinkLocalManager)
|
||||||
|
std::cout << " [Link Local Manager]";
|
||||||
|
if (area & gloox::LogAreaXmlIncoming)
|
||||||
|
std::cout << " \033[1;36m[XML IN]";
|
||||||
|
if (area & gloox::LogAreaXmlOutgoing)
|
||||||
|
std::cout << " \033[1;35m[XML OUT]";
|
||||||
|
if (area & gloox::LogAreaUser)
|
||||||
|
std::cout << " [USER]";
|
||||||
|
|
||||||
|
if (area == gloox::LogAreaClassDns)
|
||||||
|
std::cout << '\t';
|
||||||
|
}
|
||||||
|
|
||||||
Logger::Logger(gloox::LogSink& sink, gloox::LogLevel level):
|
Logger::Logger(gloox::LogSink& sink, gloox::LogLevel level):
|
||||||
sink(sink)
|
sink(sink)
|
||||||
@ -16,5 +89,8 @@ Logger::~Logger() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Logger::handleLog(gloox::LogLevel level, gloox::LogArea area, const std::string& message) {
|
void Logger::handleLog(gloox::LogLevel level, gloox::LogArea area, const std::string& message) {
|
||||||
std::cout << "Log message: " << message << std::endl;
|
writeTimestamp();
|
||||||
|
std::cout << getColor(level) << bold << "[" << getLogLevel(level) << "]" << clear << bold;
|
||||||
|
writeTags(area);
|
||||||
|
std::cout << clear << '\t' << message << clear << std::endl;
|
||||||
}
|
}
|
||||||
|
1
logger.h
1
logger.h
@ -13,6 +13,7 @@ public:
|
|||||||
|
|
||||||
void handleLog(gloox::LogLevel level, gloox::LogArea area, const std::string& message) override;
|
void handleLog(gloox::LogLevel level, gloox::LogArea area, const std::string& message) override;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
gloox::LogSink& sink;
|
gloox::LogSink& sink;
|
||||||
gloox::LogLevel level;
|
gloox::LogLevel level;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user