19 #ifndef IRCCD_DAEMON_LOGGER_HPP
20 #define IRCCD_DAEMON_LOGGER_HPP
27 #include <irccd/sysconfig.hpp>
31 #include <string_view>
84 class logger :
public std::ostream,
public std::stringbuf {
99 std::string_view category_;
100 std::string_view component_;
102 void debug(
const std::string&);
103 void info(
const std::string&);
104 void warning(
const std::string&);
105 auto sync() ->
int override;
106 logger(
sink&, level, std::string_view, std::string_view) noexcept;
129 bool verbose_{
false};
214 template <typename Loggable>
232 auto warning(std::string_view category, std::string_view component) ->
logger;
241 template <
typename Loggable>
260 auto debug(std::string_view category, std::string_view component) ->
logger;
269 template <
typename Loggable>
298 auto pre(std::string_view category,
299 std::string_view component,
300 std::string_view message)
const -> std::string;
312 std::string_view component,
313 std::string_view message)
const -> std::string;
324 std::string_view component,
325 std::string_view message)
const -> std::string;
336 std::string_view component,
337 std::string_view message)
const -> std::string;
369 std::string output_normal_;
370 std::string output_error_;
422 #if defined(IRCCD_HAVE_SYSLOG)
428 class syslog_sink :
public sink {
433 void write_debug(
const std::string& line)
override;
438 void write_info(
const std::string& line)
override;
443 void write_warning(
const std::string& line)
override;
457 #endif // !IRCCD_HAVE_SYSLOG
465 #endif // !IRCCD_DAEMON_LOGGER_HPP
Interface to implement new logger mechanisms.
Definition: logger.hpp:121
void write_debug(const std::string &line) override
Traits for loggable objects.
Definition: logger.hpp:78
void write_debug(const std::string &line) override
auto warning(std::string_view category, std::string_view component) -> logger
virtual void write_warning(const std::string &line)=0
virtual void write_debug(const std::string &line)=0
Filter messages before printing them.
Definition: logger.hpp:283
void set_filter(filter &filter) noexcept
auto debug(const Loggable &loggable) -> logger
Definition: logger.hpp:270
void write_warning(const std::string &line) override
void write_debug(const std::string &line) override
void write_info(const std::string &line) override
void set_verbose(bool mode) noexcept
virtual void write_info(const std::string &line)=0
file_sink(std::string normal, std::string errors)
void write_warning(const std::string &line) override
auto is_verbose() const noexcept -> bool
Use to disable logs.
Definition: logger.hpp:404
virtual auto pre_info(std::string_view category, std::string_view component, std::string_view message) const -> std::string
void write_warning(const std::string &line) override
virtual ~filter()=default
virtual auto pre_warning(std::string_view category, std::string_view component, std::string_view message) const -> std::string
auto info(std::string_view category, std::string_view component) -> logger
Parent namespace.
Definition: acceptor.hpp:43
auto pre(std::string_view category, std::string_view component, std::string_view message) const -> std::string
Logger implementation for console output using std::cout and std::cerr.
Definition: logger.hpp:345
friend class logger
Make logger friend.
Definition: logger.hpp:126
Output to a files.
Definition: logger.hpp:367
auto debug(std::string_view category, std::string_view component) -> logger
void write_info(const std::string &line) override
auto warning(const Loggable &loggable) -> logger
Definition: logger.hpp:242
Logger object.
Definition: logger.hpp:84
void write_info(const std::string &line) override
virtual auto pre_debug(std::string_view category, std::string_view component, std::string_view message) const -> std::string