Provide default stderr logger for INFO/WARN/ERR levels.

This commit is contained in:
Peter Johnson
2015-11-30 00:41:15 -08:00
parent bb9988365f
commit 790862db4b
2 changed files with 37 additions and 2 deletions

View File

@@ -7,10 +7,45 @@
#include "Log.h"
#include <cstdio>
#ifdef _WIN32
#include <cstdlib>
#else
#include <cstring>
#endif
using namespace nt;
ATOMIC_STATIC_INIT(Logger)
Logger::Logger() {}
static void def_log_func(unsigned int level, const char* file,
unsigned int line, const char* msg) {
if (level == 20) {
std::fprintf(stderr, "NT: %s\n", msg);
return;
}
const char* levelmsg;
if (level >= 50)
levelmsg = "CRITICAL";
else if (level >= 40)
levelmsg = "ERROR";
else if (level >= 30)
levelmsg = "WARNING";
else
return;
#ifdef _WIN32
char fname[60];
char ext[10];
_splitpath_s(file, nullptr, 0, nullptr, 0, fname, 60, ext, 10);
std::fprintf(stderr, "NT: %s: %s (%s%s:%d)\n", levelmsg, msg, fname, ext,
line);
#else
std::fprintf(stderr, "NT: %s: %s (%s:%d)\n", levelmsg, msg, basename(file),
line);
#endif
}
Logger::Logger() : m_func(def_log_func) {}
Logger::~Logger() {}

View File

@@ -45,7 +45,7 @@ class Logger {
Logger();
LogFunc m_func;
unsigned int m_min_level = 100;
unsigned int m_min_level = 20;
ATOMIC_STATIC_DECL(Logger)
};