Browse Source

add a printf style logging macro

main
cinnaboot 5 years ago
parent
commit
e13d5cf8ec
  1. 33
      src/dumbLog.cpp
  2. 9
      src/dumbLog.h
  3. 3
      src/types.h

33
src/dumbLog.cpp

@ -3,6 +3,8 @@
#include <chrono> #include <chrono>
#include "dumbLog.h" #include "dumbLog.h"
#include "types.h"
void dumbLog::setOutputStream(std::ostream* out) void dumbLog::setOutputStream(std::ostream* out)
{ {
@ -33,7 +35,36 @@ int
dumbLog::getCurrentMS() dumbLog::getCurrentMS()
{ {
auto now = std::chrono::system_clock::now(); auto now = std::chrono::system_clock::now();
long long total_ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count(); u64 total_ms = std::chrono::duration_cast<std::chrono::milliseconds>(
now.time_since_epoch()
).count();
return int(total_ms % 1000); return int(total_ms % 1000);
} }
#include <cstdarg>
#include <ctime>
void
dumbLogF(log_level l, const char* func, const char* fmt, ...)
{
const char* level = logger.logLevelToString(l);
char time_str[100];
timespec ts;
timespec_get(&ts, TIME_UTC);
i64 ms = ts.tv_nsec / 1000000;
if (strftime(time_str, sizeof(time_str), "%T", localtime(&ts.tv_sec))) {
// NOTE: print prefix, "H:M:S.ms, log_level, function(), "
printf("%s.%03ld [%s] %s(), ", time_str, ms, level, func);
// NOTE: append user args
va_list args;
va_start(args, fmt);
vprintf(fmt, args);
va_end(args);
} else {
printf("%s(), error getting time\n", __FUNCTION__);
}
}

9
src/dumbLog.h

@ -24,7 +24,14 @@ struct dumbLog
static dumbLog logger; static dumbLog logger;
#define LOG(level) *logger.OUT \ #define LOG(level) *logger.OUT \
<< std::put_time(logger.getCurrentTime(), "%F %T.") << logger.getCurrentMS() << " " \ << std::put_time(logger.getCurrentTime(), "%F %T.") \
<< logger.getCurrentMS() << " " \
<< "[" << logger.logLevelToString(level) << "] " \ << "[" << logger.logLevelToString(level) << "] " \
<< "(" << __FUNCTION__ << ") " << "(" << __FUNCTION__ << ") "
#include <cstdio>
#define LOGF(level, format_str, ...) \
dumbLogF(level, __FUNCTION__, format_str, ##__VA_ARGS__);
void dumbLogF(log_level l, const char* func, const char* fmt, ...);

3
src/types.h

@ -5,8 +5,9 @@
typedef uint8_t u8; typedef uint8_t u8;
typedef int32_t i32;
typedef uint16_t u16; typedef uint16_t u16;
typedef uint32_t u32; typedef uint32_t u32;
typedef uint64_t u64; typedef uint64_t u64;
typedef int32_t i32;
typedef int64_t i64;

Loading…
Cancel
Save