NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
log_event.hpp
浏览该文件的文档.
1#ifndef NEFORCE_LOGGING_LOG_EVENT_HPP__
2#define NEFORCE_LOGGING_LOG_EVENT_HPP__
3
11
17#ifdef ERROR
18# undef ERROR
19#endif
20NEFORCE_BEGIN_NAMESPACE__
21
36
37#define NEFORCE_LOG_LEVEL_TRACE 0
38#define NEFORCE_LOG_LEVEL_DEBUG 1
39#define NEFORCE_LOG_LEVEL_INFO 2
40#define NEFORCE_LOG_LEVEL_WARN 3
41#define NEFORCE_LOG_LEVEL_ERROR 4
42#define NEFORCE_LOG_LEVEL_FATAL 5
43#define NEFORCE_LOG_LEVEL_OFF 6
44
51enum class log_level : uint8_t {
52 TRACE = NEFORCE_LOG_LEVEL_TRACE,
53 DEBUG = NEFORCE_LOG_LEVEL_DEBUG,
54 INFO = NEFORCE_LOG_LEVEL_INFO,
55 WARN = NEFORCE_LOG_LEVEL_WARN,
56 ERROR = NEFORCE_LOG_LEVEL_ERROR,
57 FATAL = NEFORCE_LOG_LEVEL_FATAL,
58 OFF = NEFORCE_LOG_LEVEL_OFF
59};
60
69#ifndef NEFORCE_ACTIVE_LOG_LEVEL
70# ifdef NDEBUG
71# define NEFORCE_ACTIVE_LOG_LEVEL NEFORCE_LOG_LEVEL_INFO
72# else
73# define NEFORCE_ACTIVE_LOG_LEVEL NEFORCE_LOG_LEVEL_TRACE
74# endif
75#endif
76
82NEFORCE_CONSTEXPR20 string to_string(const log_level level) {
83 switch (level) {
85 return "TRACE";
87 return "DEBUG";
88 case log_level::INFO:
89 return "INFO";
90 case log_level::WARN:
91 return "WARN";
93 return "ERROR";
95 return "FATAL";
96 case log_level::OFF:
97 return "OFF";
98 default:
100 }
101}
102
103
115
116
124class NEFORCE_API mdc {
125private:
126 static unordered_map<string, string>& storage();
127
128public:
134 static void put(const string& key, string value);
135
141 static string get(const string& key);
142
147 static void remove(const string& key);
148
150 static void clear();
151
156 static bool empty();
157
163};
164
165
182 // Logging
184
185NEFORCE_END_NAMESPACE__
186#endif // NEFORCE_LOGGING_LOG_EVENT_HPP__
日期时间类
Mapped Diagnostic Context,线程局部上下文
static bool empty()
检查当前线程的 MDC 是否为空
static unordered_map< string, string > snapshot()
获取当前线程 MDC 的快照
static void clear()
清除当前线程的所有 MDC 数据
static void remove(const string &key)
移除指定的键
static void put(const string &key, string value)
设置键值对
static string get(const string &key)
获取键对应的值
共享智能指针类模板
日期时间处理库
unsigned char uint8_t
8位无符号整数类型
void unreachable() noexcept
标记不可达代码路径
log_level
日志级别枚举
overflow_policy
异步队列溢出策略
@ OFF
关闭所有日志
@ block
阻塞等待直到队列有空间
@ overrun_oldest
丢弃队列中最旧的事件,为新事件腾出空间
constexpr string to_string(const CharT &c)
将字符转换为普通字符串
共享智能指针实现
源码位置信息工具
日志事件结构体
source_location loc
源码位置
shared_ptr< unordered_map< string, string > > context
上下文(Logger + MDC)
log_level level
日志级别
string logger_name
产生此事件的 Logger 名称
thread::id thread_id
产生此事件的线程 ID
string message
格式化后的日志消息
datetime dt
事件时间戳
线程唯一标识符类
线程管理类
无序映射容器