rogue
Loading...
Searching...
No Matches
Logging.h
Go to the documentation of this file.
1
17#ifndef __ROGUE_LOGGING_H__
18#define __ROGUE_LOGGING_H__
19#include "rogue/Directives.h"
20
21#include <stdint.h>
22
23#include <exception>
24#include <memory>
25#include <mutex>
26#include <string>
27#include <thread>
28#include <vector>
29
30namespace rogue {
31
33class LogFilter {
34 public:
36 std::string name_;
38 uint32_t level_;
39
45 LogFilter(std::string name, uint32_t level) {
46 name_ = name;
47 level_ = level;
48 }
49};
50
58class Logging {
59 // Global logging level
60 static uint32_t gblLevel_;
61
62 // Logging-level lock
63 static std::mutex levelMtx_;
64
65 // Name/level filters
66 static std::vector<rogue::LogFilter*> filters_;
67
68 void intLog(uint32_t level, const char* format, va_list args);
69
70 // Local logger level
71 uint32_t level_;
72
73 // Logger name
74 std::string name_;
75
76 public:
78 static const uint32_t Critical = 50;
80 static const uint32_t Error = 40;
82 static const uint32_t Thread = 35;
84 static const uint32_t Warning = 30;
86 static const uint32_t Info = 20;
88 static const uint32_t Debug = 10;
89
104 static std::shared_ptr<rogue::Logging> create(const std::string& name, bool quiet = false);
105
116 explicit Logging(const std::string& name, bool quiet = false);
118 ~Logging();
119
124 static void setLevel(uint32_t level);
125
131 static void setFilter(const std::string& filter, uint32_t level);
132
138 void log(uint32_t level, const char* fmt, ...);
139
141 void critical(const char* fmt, ...);
143 void error(const char* fmt, ...);
145 void warning(const char* fmt, ...);
147 void info(const char* fmt, ...);
149 void debug(const char* fmt, ...);
150
152 void logThreadId();
153
155 static void setup_python();
156};
157
159typedef std::shared_ptr<rogue::Logging> LoggingPtr;
160} // namespace rogue
161
162#endif
Per-logger level override filter entry.
Definition Logging.h:33
LogFilter(std::string name, uint32_t level)
Constructs a filter entry.
Definition Logging.h:45
uint32_t level_
Minimum enabled level for matching names.
Definition Logging.h:38
std::string name_
Logger name prefix to match.
Definition Logging.h:36
Structured Rogue logging helper.
Definition Logging.h:58
~Logging()
Destroys the logger instance.
Definition Logging.cpp:84
void info(const char *fmt,...)
Emits a formatted message at Info level.
Definition Logging.cpp:144
static const uint32_t Thread
Thread-trace severity level constant.
Definition Logging.h:82
void logThreadId()
Emits the current thread id through this logger.
Definition Logging.cpp:158
static void setup_python()
Registers Python bindings for Logging.
Definition Logging.cpp:174
static std::shared_ptr< rogue::Logging > create(const std::string &name, bool quiet=false)
Creates a logger instance.
Definition Logging.cpp:60
static void setFilter(const std::string &filter, uint32_t level)
Sets name-based filter level override.
Definition Logging.cpp:92
void warning(const char *fmt,...)
Emits a formatted message at Warning level.
Definition Logging.cpp:137
static const uint32_t Debug
Debug severity level constant.
Definition Logging.h:88
void log(uint32_t level, const char *fmt,...)
Emits a formatted log message at a specified level.
Definition Logging.cpp:116
static const uint32_t Error
Error severity level constant.
Definition Logging.h:80
static const uint32_t Info
Informational severity level constant.
Definition Logging.h:86
static const uint32_t Warning
Warning severity level constant.
Definition Logging.h:84
static void setLevel(uint32_t level)
Sets the global default logging level.
Definition Logging.cpp:86
void critical(const char *fmt,...)
Emits a formatted message at Critical level.
Definition Logging.cpp:123
void debug(const char *fmt,...)
Emits a formatted message at Debug level.
Definition Logging.cpp:151
static const uint32_t Critical
Critical severity level constant.
Definition Logging.h:78
void error(const char *fmt,...)
Emits a formatted message at Error level.
Definition Logging.cpp:130
std::shared_ptr< rogue::Logging > LoggingPtr
Shared pointer alias for Logging.
Definition Logging.h:159