8#ifndef ZCLIBLOG_LOGGER_BASE_HPP
9#define ZCLIBLOG_LOGGER_BASE_HPP
24#if ZCLIBLOG_LOGGER_CONFIGURATIONS_DEFAULT_CSNPRINTF
30#if ZCLIBLOG_LOGGER_CONFIGURATIONS_LOGGER_MUTEX
33#include <shared_mutex>
34#define ZCLibLog_MUTEX std::shared_mutex
36#define ZCLibLog_MUTEX std::mutex
49 #if ZCLIBLOG_LOGGER_CONFIGURATIONS_DEFAULT_CSNPRINTF
50 = formatters::csnprintf
57 "Formatter must be format_api");
60 #if ZCLIBLOG_LOGGER_CONFIGURATIONS_LOGGER_MUTEX
61 mutable ZCLibLog_MUTEX m_mutex;
95 #if ZCLIBLOG_LOGGER_CONFIGURATIONS_LOGGER_MUTEX
96 std::lock_guard<ZCLibLog_MUTEX> lock(m_mutex);
107 if (!ex)
throw std::invalid_argument(
"executor is nullptr");
108 #if ZCLIBLOG_LOGGER_CONFIGURATIONS_LOGGER_MUTEX
109 std::lock_guard<ZCLibLog_MUTEX> lock(m_mutex);
120 #if ZCLIBLOG_LOGGER_CONFIGURATIONS_LOGGER_MUTEX
121 std::lock_guard<ZCLibLog_MUTEX> lock(m_mutex);
135 #if ZCLIBLOG_LOGGER_CONFIGURATIONS_LOGGER_MUTEX
136 std::lock_guard<ZCLibLog_MUTEX> lock(m_mutex);
151 const std::initializer_list<executor>& executor_ptrs = {},
155 for (
const auto& executor_ptr : executor_ptrs) {
基本日志器,无执行
Definition logger_base.hpp:53
LogLevelCfg m_config
Definition logger_base.hpp:70
ZCLibLog_NODISCARD bool be_executable(const LogLevel level) const noexcept
检查等级是否可执行
Definition logger_base.hpp:89
ZCLibLog_NODISCARD LogLevelCfg & config() noexcept
获取并可修改日志器的等级配置
Definition logger_base.hpp:80
void clear_executors()
清空所有执行器
Definition logger_base.hpp:134
std::pair< size_t, executor > executor_pair
Definition logger_base.hpp:64
BaseLogger(std::string name, const std::initializer_list< executor > &executor_ptrs={}, const LogLevelCfg config={})
构造同步日志器
Definition logger_base.hpp:149
Formatter m_formatter
Definition logger_base.hpp:72
size_t bind_executor(const executor &ex)
绑定执行器
Definition logger_base.hpp:106
void debind_executor(size_t id)
解绑执行器
Definition logger_base.hpp:119
ZCLibLog_NODISCARD bool has_executor() const
判断是否有执行器
Definition logger_base.hpp:94
std::vector< executor_pair > m_executors
Definition logger_base.hpp:67
ZCLibLog_NODISCARD const std::string & name() const noexcept
获取日志器的名字
Definition logger_base.hpp:75
size_t m_nextID
Definition logger_base.hpp:68
std::string m_name
Definition logger_base.hpp:66
执行器包装类
Definition logger_types.hpp:133
#define ZCLibLog_NODISCARD
Definition logger_macros.h:50
ZCLibLog的命名空间
Definition android_log.hpp:16
LogLevel
一些日志等级
Definition logger_types.hpp:35
Log等级范围
Definition logger_types.hpp:74
LogLevel max_level
配置的最高等级
Definition logger_types.hpp:78
LogLevel min_level
配置的最低等级
Definition logger_types.hpp:76