1#ifndef NEFORCE_CORE_LOGGING_LOGGER_HPP__
2#define NEFORCE_CORE_LOGGING_LOGGER_HPP__
17NEFORCE_BEGIN_NAMESPACE__
37class NEFORCE_API logger {
187 void trace(
string msg,
string file,
string func,
int line) {
198 void debug(
string msg,
string file,
string func,
int line) {
209 void info(
string msg,
string file,
string func,
int line) {
220 void warn(
string msg,
string file,
string func,
int line) {
231 void error(
string msg,
string file,
string func,
int line) {
242 void fatal(
string msg,
string file,
string func,
int line) {
257#define NEFORCE_LOG_TRACE(msg) _NEFORCE logger::instance().trace(msg, __FILE__, __func__, __LINE__)
260#define NEFORCE_LOG_DEBUG(msg) _NEFORCE logger::instance().debug(msg, __FILE__, __func__, __LINE__)
263#define NEFORCE_LOG_INFO(msg) _NEFORCE logger::instance().info(msg, __FILE__, __func__, __LINE__)
266#define NEFORCE_LOG_WARN(msg) _NEFORCE logger::instance().warn(msg, __FILE__, __func__, __LINE__)
269#define NEFORCE_LOG_ERROR(msg) _NEFORCE logger::instance().error(msg, __FILE__, __func__, __LINE__)
272#define NEFORCE_LOG_FATAL(msg) _NEFORCE logger::instance().fatal(msg, __FILE__, __func__, __LINE__)
276#define NEFORCE_LOGF_TRACE(msg, ...) \
277 _NEFORCE logger::instance().trace(_NEFORCE format(msg, __VA_ARGS__), __FILE__, __func__, __LINE__)
280#define NEFORCE_LOGF_DEBUG(msg, ...) \
281 _NEFORCE logger::instance().debug(_NEFORCE format(msg, __VA_ARGS__), __FILE__, __func__, __LINE__)
284#define NEFORCE_LOGF_INFO(msg, ...) \
285 _NEFORCE logger::instance().info(_NEFORCE format(msg, __VA_ARGS__), __FILE__, __func__, __LINE__)
288#define NEFORCE_LOGF_WARN(msg, ...) \
289 _NEFORCE logger::instance().warn(_NEFORCE format(msg, __VA_ARGS__), __FILE__, __func__, __LINE__)
292#define NEFORCE_LOGF_ERROR(msg, ...) \
293 _NEFORCE logger::instance().error(_NEFORCE format(msg, __VA_ARGS__), __FILE__, __func__, __LINE__)
296#define NEFORCE_LOGF_FATAL(msg, ...) \
297 _NEFORCE logger::instance().fatal(_NEFORCE format(msg, __VA_ARGS__), __FILE__, __func__, __LINE__)
301NEFORCE_END_NAMESPACE__
void error(string msg, string file, string func, int line)
记录ERROR级别日志
void log(log_level level, string msg, string file, string func, int line)
记录日志
void set_level(log_level level)
设置日志级别
void remove_context(const string &key)
移除上下文信息
void add_context(const string &key, string value)
添加上下文信息
void set_filter(function< bool(const log_event &)> filter)
设置日志过滤器
void warn(string msg, string file, string func, int line)
记录WARN级别日志
void enable_async(bool async)
启用或禁用异步模式
void clear_context()
清除所有上下文信息
static logger & instance()
获取单例实例
void debug(string msg, string file, string func, int line)
记录DEBUG级别日志
void fatal(string msg, string file, string func, int line)
记录FATAL级别日志
void info(string msg, string file, string func, int line)
记录INFO级别日志
void trace(string msg, string file, string func, int line)
记录TRACE级别日志
void add_sink(shared_ptr< log_sink > sink)
添加输出目标
NEFORCE_NODISCARD future< async_result_t< Func, Args... > > async(launch policy, Func &&function, Args &&... args)
异步执行函数(指定策略)
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素