mirror of https://github.com/gabime/spdlog.git
parent
5ebfc92730
commit
10e4d20049
@ -0,0 +1,107 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef SPDLOG_HEADER_ONLY
|
||||
#include <spdlog/syslog_formatter.h>
|
||||
#endif
|
||||
|
||||
#include <spdlog/details/fmt_helper.h>
|
||||
|
||||
namespace spdlog {
|
||||
namespace details {
|
||||
|
||||
namespace severity {
|
||||
enum severity_enum : int {
|
||||
emergency = 0,
|
||||
alert = 1,
|
||||
critical = 2,
|
||||
error = 3,
|
||||
warning = 4,
|
||||
notice = 5,
|
||||
informational = 6,
|
||||
debug = 7,
|
||||
};
|
||||
}
|
||||
|
||||
} // namespace details
|
||||
|
||||
SPDLOG_INLINE syslog_formatter::syslog_formatter(int facility, std::string hostname, std::string appname)
|
||||
: facility_(facility),
|
||||
hostname_(std::move(hostname)),
|
||||
appname_(std::move(appname)),
|
||||
pattern_formatter_("%Y-%m-%dT%H:%M:%SZ", pattern_time_type::utc, "") {
|
||||
pattern_formatter_.need_localtime();
|
||||
}
|
||||
|
||||
SPDLOG_INLINE std::unique_ptr<formatter> syslog_formatter::clone() const {
|
||||
auto cloned = details::make_unique<syslog_formatter>(facility_, hostname_, appname_);
|
||||
#if defined(__GNUC__) && __GNUC__ < 5
|
||||
return std::move(cloned);
|
||||
#else
|
||||
return cloned;
|
||||
#endif
|
||||
}
|
||||
|
||||
SPDLOG_INLINE void syslog_formatter::format(const details::log_msg &msg, memory_buf_t &dest) {
|
||||
details::severity::severity_enum severity;
|
||||
|
||||
switch (msg.level) {
|
||||
case level::critical:
|
||||
severity = details::severity::critical;
|
||||
|
||||
case level::err:
|
||||
severity = details::severity::error;
|
||||
break;
|
||||
|
||||
case level::warn:
|
||||
severity = details::severity::warning;
|
||||
break;
|
||||
|
||||
case level::info:
|
||||
severity = details::severity::informational;
|
||||
break;
|
||||
|
||||
default:
|
||||
severity = details::severity::debug;
|
||||
break;
|
||||
}
|
||||
|
||||
dest.push_back('<');
|
||||
details::fmt_helper::append_int((facility_ * 8) + severity, dest);
|
||||
dest.push_back('>');
|
||||
dest.push_back('1');
|
||||
|
||||
dest.push_back(' ');
|
||||
pattern_formatter_.format(msg, dest);
|
||||
|
||||
dest.push_back(' ');
|
||||
if (hostname_.empty()) {
|
||||
dest.push_back('-');
|
||||
} else {
|
||||
details::fmt_helper::append_string_view(hostname_, dest);
|
||||
}
|
||||
|
||||
dest.push_back(' ');
|
||||
if (appname_.empty()) {
|
||||
dest.push_back('-');
|
||||
} else {
|
||||
details::fmt_helper::append_string_view(appname_, dest);
|
||||
}
|
||||
|
||||
dest.push_back(' ');
|
||||
details::fmt_helper::append_int(details::os::pid(), dest);
|
||||
|
||||
dest.push_back(' ');
|
||||
if (msg.logger_name.size() == 0) {
|
||||
dest.push_back('-');
|
||||
} else {
|
||||
details::fmt_helper::append_string_view(msg.logger_name, dest);
|
||||
}
|
||||
|
||||
dest.push_back(' ');
|
||||
dest.push_back('-'); // nil structured data
|
||||
|
||||
dest.push_back(' ');
|
||||
details::fmt_helper::append_string_view(msg.payload, dest);
|
||||
}
|
||||
|
||||
} // namespace spdlog
|
@ -0,0 +1,63 @@
|
||||
#pragma once
|
||||
|
||||
#include <spdlog/common.h>
|
||||
#include <spdlog/formatter.h>
|
||||
#include <spdlog/pattern_formatter.h>
|
||||
#include <spdlog/details/log_msg.h>
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace spdlog {
|
||||
|
||||
namespace facility {
|
||||
enum facility_enum : int {
|
||||
kernel = 0,
|
||||
user = 1,
|
||||
mail = 2,
|
||||
daemons = 3,
|
||||
security = 4,
|
||||
syslogd = 5,
|
||||
printer = 6,
|
||||
network = 7,
|
||||
uucp = 8,
|
||||
clock = 9,
|
||||
security2 = 10,
|
||||
ftp = 11,
|
||||
ntp = 12,
|
||||
audit = 13,
|
||||
alert = 14,
|
||||
clock2 = 15,
|
||||
local0 = 16,
|
||||
local1 = 17,
|
||||
local2 = 18,
|
||||
local3 = 19,
|
||||
local4 = 20,
|
||||
local5 = 21,
|
||||
local6 = 22,
|
||||
local7 = 23
|
||||
};
|
||||
}
|
||||
|
||||
class SPDLOG_API syslog_formatter : public formatter {
|
||||
public:
|
||||
explicit syslog_formatter(int facility, std::string hostname, std::string appname);
|
||||
|
||||
syslog_formatter(const syslog_formatter &other) = delete;
|
||||
syslog_formatter &operator=(const syslog_formatter &other) = delete;
|
||||
|
||||
std::unique_ptr<formatter> clone() const override;
|
||||
void format(const details::log_msg &msg, memory_buf_t &dest) override;
|
||||
|
||||
private:
|
||||
int facility_;
|
||||
std::string hostname_;
|
||||
std::string appname_;
|
||||
spdlog::pattern_formatter pattern_formatter_;
|
||||
};
|
||||
|
||||
} // namespace spdlog
|
||||
|
||||
#ifdef SPDLOG_HEADER_ONLY
|
||||
#include "syslog_formatter-inl.h"
|
||||
#endif
|
Loading…
Reference in New Issue