21 template <
typename Mutex>
26 syslog_sink(std::string ident,
int syslog_option,
int syslog_facility,
bool enable_formatting)
34 ident_{std::move(ident)}
37 ::openlog(ident_.empty() ?
nullptr : ident_.c_str(), syslog_option, syslog_facility);
53 if (enable_formatting_)
63 size_t length = payload.size();
65 if (length >
static_cast<size_t>(std::numeric_limits<int>::max()))
67 length =
static_cast<size_t>(std::numeric_limits<int>::max());
70 ::syslog(syslog_prio_from_level(msg),
"%.*s",
static_cast<int>(length), payload.data());
76 bool enable_formatting_ =
false;
90 return syslog_levels_.at(
static_cast<levels_array::size_type
>(msg.
level));
99 template <
typename Factory = spdlog::synchronous_factory>
100 inline std::shared_ptr<logger>
syslog_logger_mt(
const std::string& logger_name,
const std::string& syslog_ident =
"",
int syslog_option = 0,
int syslog_facility = LOG_USER,
bool enable_formatting =
false)
102 return Factory::template create<sinks::syslog_sink_mt>(logger_name, syslog_ident, syslog_option, syslog_facility, enable_formatting);
105 template <
typename Factory = spdlog::synchronous_factory>
106 inline std::shared_ptr<logger>
syslog_logger_st(
const std::string& logger_name,
const std::string& syslog_ident =
"",
int syslog_option = 0,
int syslog_facility = LOG_USER,
bool enable_formatting =
false)
108 return Factory::template create<sinks::syslog_sink_st>(logger_name, syslog_ident, syslog_option, syslog_facility, enable_formatting);
Definition base_sink.h:22
Definition syslog_sink.h:23
int syslog_prio_from_level(const details::log_msg &msg) const
Definition syslog_sink.h:88
void sink_it_(const details::log_msg &msg) override
Definition syslog_sink.h:49
syslog_sink(std::string ident, int syslog_option, int syslog_facility, bool enable_formatting)
Definition syslog_sink.h:26
syslog_sink(const syslog_sink &)=delete
levels_array syslog_levels_
Definition syslog_sink.h:80
void flush_() override
Definition syslog_sink.h:73
bool enable_formatting_
Definition syslog_sink.h:76
const std::string ident_
Definition syslog_sink.h:83
~syslog_sink() override
Definition syslog_sink.h:40
std::array< int, 7 > levels_array
Definition syslog_sink.h:79
syslog_sink & operator=(const syslog_sink &)=delete
syslog_sink< std::mutex > syslog_sink_mt
Definition syslog_sink.h:94
syslog_sink< details::null_mutex > syslog_sink_st
Definition syslog_sink.h:95
std::shared_ptr< logger > syslog_logger_st(const std::string &logger_name, const std::string &syslog_ident="", int syslog_option=0, int syslog_facility=LOG_USER, bool enable_formatting=false)
Definition syslog_sink.h:106
std::shared_ptr< logger > syslog_logger_mt(const std::string &logger_name, const std::string &syslog_ident="", int syslog_option=0, int syslog_facility=LOG_USER, bool enable_formatting=false)
Definition syslog_sink.h:100
fmt::basic_string_view< char > string_view_t
Definition common.h:172
fmt::basic_memory_buffer< char, 250 > memory_buf_t
Definition common.h:173
string_view_t payload
Definition log_msg.h:32
level::level_enum level
Definition log_msg.h:23