C++ header only stream-based syslog client library.
#include "syslog_client.hpp"
int main() {
// auto syslog{syslog::makeUDPClient_mt()};
auto syslog{syslog::makeUDPClient_st()};
// by default UDP syslog client configured on 127.0.0.1:514
// so you can overwrite it
syslog.setAddr("127.0.0.1");
syslog.setPort(1000);
syslog << syslog::LogLvlMng::LL_INFO << "message" << std::endl;
}
See sample project for more complete usage examples.
From rfc5424
syslog::LogLvlMng::LogLvl | Numerical code | Description |
---|---|---|
LL_EMERG | 0 | Emergency: system is unusable |
LL_ALERT | 1 | Alert: action must be taken immediately |
LL_CRIT | 2 | Critical: critical conditions |
LL_ERR | 3 | Error: error conditions |
LL_WARNING | 4 | Warning: warning conditions |
LL_NOTICE | 5 | Notice: normal but significant condition |
LL_INFO | 6 | Informational: informational messages |
LL_DEBUG | 7 | Debug: debug-level messages |
syslog::LogFacilityMng::LogFacility | Numerical code | Description |
---|---|---|
LF_KERN | 0 | kernel messages |
LF_USER | 1 | user-level messages |
LF_MAIL | 2 | mail system |
LF_DAEMON | 3 | system daemons |
LF_AUTH | 4 | security/authorization messages |
LF_SYSLOG | 5 | messages generated internally by syslogd |
LF_LPR | 6 | line printer subsystem |
LF_NEWS | 7 | network news subsystem |
LF_UUCP | 8 | UUCP subsystem |
LF_CRON | 9 | clock daemon |
LF_AUTHPRIV | 10 | security/authorization messages |
LF_FTP | 11 | FTP daemon |
LF_NTP | 12 | NTP subsystem |
LF_AUDIT | 13 | log audit |
LF_ALERT | 14 | log alert |
LF_CRON2 | 15 | clock daemon (note 2) |
LF_LOCAL0 | 16 | local use 0 (local0) |
LF_LOCAL1 | 17 | local use 1 (local1) |
LF_LOCAL2 | 18 | local use 2 (local2) |
LF_LOCAL3 | 19 | local use 3 (local3) |
LF_LOCAL4 | 20 | local use 4 (local4) |
LF_LOCAL5 | 21 | local use 5 (local5) |
LF_LOCAL6 | 22 | local use 6 (local6) |
LF_LOCAL7 | 23 | local use 7 (local7) |
You can define your own flags by inheriting the syslog::IFormatter interface and implementing the key() and value() abstract methods.
#include "syslog_client.hpp"
class ModuleNameFormatter : public syslog::IFormatter {
private:
std::string m_ModuleName;
public:
ModuleNameFormatter(std::string&& module_name) : m_ModuleName{std::move(module_name)} {}
std::string key() const noexcept override { return "module"; }
std::string value() const noexcept override { return m_ModuleName; }
};
int main() {
auto syslog{syslog::makeUDPClient_st()};
syslog.addFormatter(std::make_shared<ModuleNameFormatter>("main"));
syslog << syslog::LogLvlMng::LL_INFO << "message" << std::endl;
}
Jun 21 19:08:33 127.0.0.1 [pid 00000015] [module main] message
See automatic generated docs for more information.