Better logging
This commit is contained in:
parent
46695c8aab
commit
ac8db32552
@ -20,7 +20,7 @@ void Connection::onConnect() {}
|
||||
|
||||
void Connection::onDisconnect(gloox::ConnectionError e) {}
|
||||
|
||||
bool Connection::onTLSConnect(const gloox::CertInfo&) {
|
||||
bool Connection::onTLSConnect(const gloox::CertInfo& info) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
78
logger.cpp
78
logger.cpp
@ -4,6 +4,79 @@
|
||||
#include "logger.h"
|
||||
|
||||
#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):
|
||||
sink(sink)
|
||||
@ -16,5 +89,8 @@ Logger::~Logger() {
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user