mirror of
https://github.com/savoirfairelinux/opendht.git
synced 2026-11-08 12:28:42 +00:00
Revert "log: add tag and filter mechanism"
This reverts commit afce0fb0b4.
This commit is contained in:
1 parent
0bfd3cd9fc
commit
9f7e4aaa96
4 files changed
+307
-318
No files matched your search
+62
-65
@@ -38,28 +38,27 @@ namespace log {
|
||||
* Terminal colors for logging
|
||||
*/
|
||||
namespace Color {
|
||||
enum Code {
|
||||
FG_RED = 31,
|
||||
FG_GREEN = 32,
|
||||
FG_YELLOW = 33,
|
||||
FG_BLUE = 34,
|
||||
FG_DEFAULT = 39,
|
||||
BG_RED = 41,
|
||||
BG_GREEN = 42,
|
||||
BG_BLUE = 44,
|
||||
BG_DEFAULT = 49
|
||||
};
|
||||
class Modifier
|
||||
{
|
||||
const Code code;
|
||||
|
||||
public:
|
||||
constexpr Modifier(Code pCode)
|
||||
: code(pCode)
|
||||
{}
|
||||
friend std::ostream& operator<<(std::ostream& os, const Modifier& mod) { return os << "\033[" << mod.code << 'm'; }
|
||||
};
|
||||
} // namespace Color
|
||||
enum Code {
|
||||
FG_RED = 31,
|
||||
FG_GREEN = 32,
|
||||
FG_YELLOW = 33,
|
||||
FG_BLUE = 34,
|
||||
FG_DEFAULT = 39,
|
||||
BG_RED = 41,
|
||||
BG_GREEN = 42,
|
||||
BG_BLUE = 44,
|
||||
BG_DEFAULT = 49
|
||||
};
|
||||
class Modifier {
|
||||
const Code code;
|
||||
public:
|
||||
constexpr Modifier(Code pCode) : code(pCode) {}
|
||||
friend std::ostream&
|
||||
operator<<(std::ostream& os, const Modifier& mod) {
|
||||
return os << "\033[" << mod.code << 'm';
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
constexpr const Color::Modifier def(Color::FG_DEFAULT);
|
||||
constexpr const Color::Modifier red(Color::FG_RED);
|
||||
@@ -69,54 +68,53 @@ constexpr const Color::Modifier yellow(Color::FG_YELLOW);
|
||||
* Print va_list to std::ostream (used for logging).
|
||||
*/
|
||||
void
|
||||
printfLog(std::ostream& s, std::string_view prefix, const std::string& message)
|
||||
{
|
||||
printfLog(std::ostream& s, const std::string& message) {
|
||||
using namespace std::chrono;
|
||||
using log_precision = microseconds;
|
||||
auto num = duration_cast<log_precision>(steady_clock::now().time_since_epoch()).count();
|
||||
constexpr auto den = log_precision::period::den;
|
||||
fmt::print(s, "[{:06d}.{:06d}] {}", num / den, num % den, prefix);
|
||||
fmt::print(s, "[{:06d}.{:06d}] ", num / den, num % den);
|
||||
s << message << std::endl;
|
||||
}
|
||||
void
|
||||
printLog(std::ostream& s, std::string_view prefix, fmt::string_view format, fmt::format_args args)
|
||||
{
|
||||
printLog(std::ostream& s, fmt::string_view format, fmt::format_args args) {
|
||||
using namespace std::chrono;
|
||||
using log_precision = microseconds;
|
||||
auto num = duration_cast<log_precision>(steady_clock::now().time_since_epoch()).count();
|
||||
constexpr auto den = log_precision::period::den;
|
||||
fmt::print(s, "[{:06d}.{:06d}] {}", num / den, num % den, prefix);
|
||||
fmt::print(s, "[{:06d}.{:06d}] ", num / den, num % den);
|
||||
fmt::vprint(s, format, args);
|
||||
s << std::endl;
|
||||
}
|
||||
|
||||
std::shared_ptr<Logger>
|
||||
getStdLogger()
|
||||
{
|
||||
return std::make_shared<Logger>([](LogLevel level, std::string_view prefix, std::string&& message) {
|
||||
if (level == LogLevel::error)
|
||||
std::cerr << red;
|
||||
else if (level == LogLevel::warning)
|
||||
std::cerr << yellow;
|
||||
printfLog(std::cerr, prefix, message);
|
||||
std::cerr << def;
|
||||
});
|
||||
getStdLogger() {
|
||||
return std::make_shared<Logger>(
|
||||
[](LogLevel level, std::string&& message) {
|
||||
if (level == LogLevel::error)
|
||||
std::cerr << red;
|
||||
else if (level == LogLevel::warning)
|
||||
std::cerr << yellow;
|
||||
printfLog(std::cerr, message);
|
||||
std::cerr << def;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
std::shared_ptr<Logger>
|
||||
getFileLogger(const std::string& path)
|
||||
{
|
||||
getFileLogger(const std::string &path) {
|
||||
auto logfile = std::make_shared<std::ofstream>();
|
||||
logfile->open(path, std::ios::out);
|
||||
return std::make_shared<Logger>([logfile](LogLevel /*level*/, std::string_view prefix, std::string&& message) {
|
||||
printfLog(*logfile, prefix, message);
|
||||
});
|
||||
return std::make_shared<Logger>(
|
||||
[logfile](LogLevel /*level*/, std::string&& message) {
|
||||
printfLog(*logfile, message);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
constexpr int
|
||||
syslogLevel(LogLevel level)
|
||||
{
|
||||
constexpr
|
||||
int syslogLevel(LogLevel level) {
|
||||
switch (level) {
|
||||
case LogLevel::error:
|
||||
return LOG_ERR;
|
||||
@@ -130,13 +128,15 @@ syslogLevel(LogLevel level)
|
||||
#endif
|
||||
|
||||
std::shared_ptr<Logger>
|
||||
getSyslogLogger(const char* name)
|
||||
{
|
||||
getSyslogLogger(const char* name) {
|
||||
#ifndef _WIN32
|
||||
struct Syslog
|
||||
{
|
||||
explicit Syslog(const char* n) { openlog(n, LOG_NDELAY, LOG_USER); }
|
||||
~Syslog() { closelog(); }
|
||||
struct Syslog {
|
||||
explicit Syslog(const char* n) {
|
||||
openlog(n, LOG_NDELAY, LOG_USER);
|
||||
}
|
||||
~Syslog() {
|
||||
closelog();
|
||||
}
|
||||
};
|
||||
// syslog is global. Existing instance must be reused.
|
||||
static std::weak_ptr<Syslog> opened_logfile;
|
||||
@@ -145,37 +145,34 @@ getSyslogLogger(const char* name)
|
||||
logfile = std::make_shared<Syslog>(name);
|
||||
opened_logfile = logfile;
|
||||
}
|
||||
return std::make_shared<Logger>([logfile](LogLevel level, std::string_view prefix, std::string&& message) {
|
||||
syslog(syslogLevel(level), "%.*s%.*s", (int) prefix.size(), prefix.data(), (int) message.size(), message.c_str());
|
||||
});
|
||||
return std::make_shared<Logger>(
|
||||
[logfile](LogLevel level, std::string&& message) {
|
||||
syslog(syslogLevel(level), "%s", message.c_str());
|
||||
});
|
||||
#else
|
||||
return getStdLogger();
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
enableLogging(dht::DhtRunner& dht)
|
||||
{
|
||||
enableLogging(dht::DhtRunner &dht) {
|
||||
dht.setLogger(getStdLogger());
|
||||
}
|
||||
|
||||
void
|
||||
enableFileLogging(dht::DhtRunner& dht, const std::string& path)
|
||||
{
|
||||
enableFileLogging(dht::DhtRunner &dht, const std::string &path) {
|
||||
dht.setLogger(getFileLogger(path));
|
||||
}
|
||||
|
||||
OPENDHT_PUBLIC void
|
||||
enableSyslog(dht::DhtRunner& dht, const char* name)
|
||||
{
|
||||
enableSyslog(dht::DhtRunner &dht, const char* name) {
|
||||
dht.setLogger(getSyslogLogger(name));
|
||||
}
|
||||
|
||||
void
|
||||
disableLogging(dht::DhtRunner& dht)
|
||||
{
|
||||
disableLogging(dht::DhtRunner &dht) {
|
||||
dht.setLogger();
|
||||
}
|
||||
|
||||
} // namespace log
|
||||
} // namespace dht
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user