libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
logger.h File Reference
#include <thread>
#include <variant>
#include <functional>
#include <promeki/core/namespace.h>
#include <promeki/core/string.h>
#include <promeki/core/stringlist.h>
#include <promeki/core/queue.h>
#include <promeki/core/map.h>
#include <promeki/core/mutex.h>
#include <promeki/core/atomic.h>
#include <promeki/core/promise.h>
#include <promeki/core/datetime.h>
#include <promeki/core/timestamp.h>
Include dependency graph for logger.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Logger
 Asynchronous thread-safe logging facility. More...
 
struct  Logger::LogEntry
 A single log entry. More...
 
struct  Logger::LogFormat
 Context passed to formatters, combining entry data with resolved thread name. More...
 

Macros

#define PROMEKI_SOURCE_FILE   promeki::sourceFileName(__FILE__)
 
#define PROMEKI_DEBUG(name)
 
#define promekiLogImpl(_plevel, format, ...)
 
#define promekiLog(level, format, ...)   promekiLogImpl(level, format, ##__VA_ARGS__)
 
#define promekiLogSync()   Logger::defaultLogger().sync()
 
#define promekiLogStackTrace(_plevel)
 
#define promekiDebug(format, ...)
 
#define promekiInfo(format, ...)   promekiLog(Logger::LogLevel::Info, format, ##__VA_ARGS__)
 
#define promekiWarn(format, ...)   promekiLog(Logger::LogLevel::Warn, format, ##__VA_ARGS__)
 
#define promekiErr(format, ...)   promekiLog(Logger::LogLevel::Err, format, ##__VA_ARGS__)
 
#define PROMEKI_BENCHMARK_BEGIN(name)
 
#define PROMEKI_BENCHMARK_END(name)
 

Functions

bool promekiRegisterDebug (bool *enabler, const char *name, const char *file, int line)
 

Detailed Description

See LICENSE file in the project root folder for license information.

Macro Definition Documentation

◆ PROMEKI_BENCHMARK_BEGIN

#define PROMEKI_BENCHMARK_BEGIN (   name)
Value:
Dynamic array container wrapping std::vector.
Definition list.h:40
A monotonic timestamp based on std::chrono::steady_clock.
Definition timestamp.h:32
static TimeStamp now()
Returns a TimeStamp representing the current time.
Definition timestamp.h:64

◆ PROMEKI_BENCHMARK_END

#define PROMEKI_BENCHMARK_END (   name)
Value:
Logger::defaultLogger().log(Logger::LogLevel::Debug, __FILE__, __LINE__, String::sprintf("[%s] %s took %.9lf sec", \
_promeki_debug_name, PROMEKI_STRINGIFY(name), _promeki_debug_timestamp_##name.elapsedSeconds())); \
}
@ Debug
Debug-level messages.
Definition logger.h:107
static String sprintf(const char *fmt,...)
Creates a formatted string using printf-style syntax.

◆ PROMEKI_DEBUG

#define PROMEKI_DEBUG (   name)
Value:
namespace { \
[[maybe_unused]] static const char *_promeki_debug_name = PROMEKI_STRINGIFY(name); \
promekiRegisterDebug(&_promeki_debug_enabled, PROMEKI_STRINGIFY(name), PROMEKI_SOURCE_FILE, __LINE__); \
}

◆ promekiLogImpl

#define promekiLogImpl (   _plevel,
  format,
  ... 
)
Value:
do { if(!(_plevel) || (_plevel) >= Logger::defaultLogger().level()) \
Logger::defaultLogger().log(_plevel, PROMEKI_SOURCE_FILE, __LINE__, String::sprintf(format, ##__VA_ARGS__)); \
} while(0)
static Logger & defaultLogger()
Returns the singleton default Logger instance.

◆ promekiLogStackTrace

#define promekiLogStackTrace (   _plevel)
Value:
do { if(!(_plevel) || (_plevel) >= Logger::defaultLogger().level()) \
Logger::defaultLogger().log(_plevel, PROMEKI_SOURCE_FILE, __LINE__, promekiStackTrace()); \
} while(0)