diff options
author | claiff <claiff@mail.ru> | 2022-09-19 19:25:16 +0300 |
---|---|---|
committer | claiff <claiff@mail.ru> | 2022-09-20 12:44:34 +0300 |
commit | 7485f26f35c9cfc1489a2e425fee57a2b51059a9 (patch) | |
tree | a29ccecb6fba0b0b0f4ad3a1f6e12b429434fb77 /src/logger | |
parent | 7fd7a6488625acc45b48ca21d55ed13783cae27f (diff) | |
download | obmc-sila-smtp-7485f26f35c9cfc1489a2e425fee57a2b51059a9.tar.xz |
add logger journal and phosphor
Diffstat (limited to 'src/logger')
-rw-r--r-- | src/logger/journal.cpp | 11 | ||||
-rw-r--r-- | src/logger/journal.hpp | 17 | ||||
-rw-r--r-- | src/logger/logger_set.cpp | 44 | ||||
-rw-r--r-- | src/logger/logger_set.hpp | 25 | ||||
-rw-r--r-- | src/logger/phosphor.cpp | 11 | ||||
-rw-r--r-- | src/logger/phosphor.hpp | 16 | ||||
-rw-r--r-- | src/logger/types/ilogger.hpp | 15 |
7 files changed, 139 insertions, 0 deletions
diff --git a/src/logger/journal.cpp b/src/logger/journal.cpp new file mode 100644 index 0000000..001e87d --- /dev/null +++ b/src/logger/journal.cpp @@ -0,0 +1,11 @@ +#include <iostream> + +#include "journal.hpp" + +namespace smtp::logger +{ + void Journal::LogError( std::string const& message ) const + { + std::cout << message << std::endl; + } +}
\ No newline at end of file diff --git a/src/logger/journal.hpp b/src/logger/journal.hpp new file mode 100644 index 0000000..1b06b8c --- /dev/null +++ b/src/logger/journal.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "types/ilogger.hpp" + +namespace smtp::logger +{ + class Journal + : public types::ILogger + { + public: + Journal() = default; + ~Journal() override = default; + + void LogError( std::string const& message ) const override; + }; +} + diff --git a/src/logger/logger_set.cpp b/src/logger/logger_set.cpp new file mode 100644 index 0000000..8a061ed --- /dev/null +++ b/src/logger/logger_set.cpp @@ -0,0 +1,44 @@ +#include "logger_set.hpp" +#include "journal.hpp" + +namespace smtp::logger +{ + std::shared_ptr < LoggerSet > LoggerSet::mInstance = nullptr; + + LoggerSet::LoggerSet( std::list < types::ILoggerPtr > const& logger ) + : mLogger( logger ) + { + + } + + std::shared_ptr < LoggerSet > LoggerSet::GetInstance() + { + if( !mInstance ) + { + BuildLogger(); + } + return mInstance; + } + + void LoggerSet::BuildLogger() + { + std::list < types::ILoggerPtr > loggers; +#ifdef ADD_JOURNAL_LOGGING + loggers.push_back( std::make_shared < Journal >()); +#endif +#ifdef ADD_PHOSPHOR_LOGGING + loggers.push_back( std::make_shared < Journal >()); +#endif + mInstance.reset( new LoggerSet( loggers )); + } + + void LoggerSet::LogError( std::string const& message ) + { + for( const auto& logger: mLogger ) + { + logger->LogError( message ); + } + } + + +} diff --git a/src/logger/logger_set.hpp b/src/logger/logger_set.hpp new file mode 100644 index 0000000..fb74e56 --- /dev/null +++ b/src/logger/logger_set.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include <string> +#include <list> + +#include "types/ilogger.hpp" + +namespace smtp::logger +{ + class LoggerSet + { + private: + explicit LoggerSet( std::list < types::ILoggerPtr > const& logger ); + static void BuildLogger(); + + static std::shared_ptr < LoggerSet > mInstance; + std::list < types::ILoggerPtr > mLogger; + public: + LoggerSet( const LoggerSet& ) = delete; + LoggerSet& operator=( LoggerSet& ) = delete; + + void LogError( std::string const& message ); + static std::shared_ptr < LoggerSet > GetInstance(); + }; +} diff --git a/src/logger/phosphor.cpp b/src/logger/phosphor.cpp new file mode 100644 index 0000000..48bb49e --- /dev/null +++ b/src/logger/phosphor.cpp @@ -0,0 +1,11 @@ +#include <phosphor-logging/elog-errors.hpp> + +#include "phosphor.hpp" + +namespace smtp::logger +{ + void Phosphor::LogError( std::string const& message ) const + { + phosphor::logging::log < phosphor::logging::level::ERR >( message.c_str()); + } +}
\ No newline at end of file diff --git a/src/logger/phosphor.hpp b/src/logger/phosphor.hpp new file mode 100644 index 0000000..dd536b5 --- /dev/null +++ b/src/logger/phosphor.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "types/ilogger.hpp" + +namespace smtp::logger +{ + class Phosphor + : public types::ILogger + { + public: + Phosphor() = default; + ~Phosphor() override = default; + + void LogError( std::string const& message ) const override; + }; +} diff --git a/src/logger/types/ilogger.hpp b/src/logger/types/ilogger.hpp new file mode 100644 index 0000000..9f88668 --- /dev/null +++ b/src/logger/types/ilogger.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include <memory> + +namespace smtp::logger::types +{ + class ILogger + { + public: + virtual ~ILogger() = default; + + virtual void LogError( std::string const& message ) const = 0; + }; + using ILoggerPtr = std::shared_ptr<ILogger>; +}
\ No newline at end of file |