diff options
author | Emma Miler <emma.pi@protonmail.com> | 2022-12-02 23:00:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-02 23:00:33 +0100 |
commit | 2d59006262d6e45f41ee325af78433475884dca4 (patch) | |
tree | 939c84779bf6a455102c74937f238a0ec05698eb /NorthstarDLL/include/spdlog/sinks/systemd_sink.h | |
parent | be78dbacc5dcc95e7d9be503d61ceb5de640c661 (diff) | |
download | NorthstarLauncher-2d59006262d6e45f41ee325af78433475884dca4.tar.gz NorthstarLauncher-2d59006262d6e45f41ee325af78433475884dca4.zip |
Move include directory (#337)v1.11.0-rc1
* Move include directory to shared folder
This commit moves the `include` directory from the NorthstarDLL project folder to the solution folder. This allows both the DLL and Launcher project to target it properly.
* Fix filters
* Update memalloc.h
* Fix filters
* Update NorthstarLauncher.vcxproj
* Remove stuff from other PR
* Update NorthstarLauncher.vcxproj
* Update NorthstarLauncher.vcxproj
* Update NorthstarDLL.vcxproj
Diffstat (limited to 'NorthstarDLL/include/spdlog/sinks/systemd_sink.h')
-rw-r--r-- | NorthstarDLL/include/spdlog/sinks/systemd_sink.h | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/NorthstarDLL/include/spdlog/sinks/systemd_sink.h b/NorthstarDLL/include/spdlog/sinks/systemd_sink.h deleted file mode 100644 index d23824b8..00000000 --- a/NorthstarDLL/include/spdlog/sinks/systemd_sink.h +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright(c) 2019 ZVYAGIN.Alexander@gmail.com -// Distributed under the MIT License (http://opensource.org/licenses/MIT) - -#pragma once - -#include <spdlog/sinks/base_sink.h> -#include <spdlog/details/null_mutex.h> -#include <spdlog/details/synchronous_factory.h> - -#include <array> -#ifndef SD_JOURNAL_SUPPRESS_LOCATION -#define SD_JOURNAL_SUPPRESS_LOCATION -#endif -#include <systemd/sd-journal.h> - -namespace spdlog { -namespace sinks { - -/** - * Sink that write to systemd journal using the `sd_journal_send()` library call. - * - * Locking is not needed, as `sd_journal_send()` itself is thread-safe. - */ -template<typename Mutex> -class systemd_sink : public base_sink<Mutex> -{ -public: - // - systemd_sink() - : syslog_levels_{{/* spdlog::level::trace */ LOG_DEBUG, - /* spdlog::level::debug */ LOG_DEBUG, - /* spdlog::level::info */ LOG_INFO, - /* spdlog::level::warn */ LOG_WARNING, - /* spdlog::level::err */ LOG_ERR, - /* spdlog::level::critical */ LOG_CRIT, - /* spdlog::level::off */ LOG_INFO}} - {} - - ~systemd_sink() override {} - - systemd_sink(const systemd_sink &) = delete; - systemd_sink &operator=(const systemd_sink &) = delete; - -protected: - using levels_array = std::array<int, 7>; - levels_array syslog_levels_; - - void sink_it_(const details::log_msg &msg) override - { - int err; - - size_t length = msg.payload.size(); - // limit to max int - if (length > static_cast<size_t>(std::numeric_limits<int>::max())) - { - length = static_cast<size_t>(std::numeric_limits<int>::max()); - } - - // Do not send source location if not available - if (msg.source.empty()) - { - // Note: function call inside '()' to avoid macro expansion - err = (sd_journal_send)("MESSAGE=%.*s", static_cast<int>(length), msg.payload.data(), "PRIORITY=%d", syslog_level(msg.level), - "SYSLOG_IDENTIFIER=%.*s", static_cast<int>(msg.logger_name.size()), msg.logger_name.data(), nullptr); - } - else - { - err = (sd_journal_send)("MESSAGE=%.*s", static_cast<int>(length), msg.payload.data(), "PRIORITY=%d", syslog_level(msg.level), - "SYSLOG_IDENTIFIER=%.*s", static_cast<int>(msg.logger_name.size()), msg.logger_name.data(), "CODE_FILE=%s", - msg.source.filename, "CODE_LINE=%d", msg.source.line, "CODE_FUNC=%s", msg.source.funcname, nullptr); - } - - if (err) - { - throw_spdlog_ex("Failed writing to systemd", errno); - } - } - - int syslog_level(level::level_enum l) - { - return syslog_levels_.at(static_cast<levels_array::size_type>(l)); - } - - void flush_() override {} -}; - -using systemd_sink_mt = systemd_sink<std::mutex>; -using systemd_sink_st = systemd_sink<details::null_mutex>; -} // namespace sinks - -// Create and register a syslog logger -template<typename Factory = spdlog::synchronous_factory> -inline std::shared_ptr<logger> systemd_logger_mt(const std::string &logger_name) -{ - return Factory::template create<sinks::systemd_sink_mt>(logger_name); -} - -template<typename Factory = spdlog::synchronous_factory> -inline std::shared_ptr<logger> systemd_logger_st(const std::string &logger_name) -{ - return Factory::template create<sinks::systemd_sink_st>(logger_name); -} -} // namespace spdlog |