From 7485f26f35c9cfc1489a2e425fee57a2b51059a9 Mon Sep 17 00:00:00 2001 From: claiff Date: Mon, 19 Sep 2022 19:25:16 +0300 Subject: add logger journal and phosphor --- src/logger/journal.cpp | 11 +++++++++++ src/logger/journal.hpp | 17 +++++++++++++++++ src/logger/logger_set.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/logger/logger_set.hpp | 25 +++++++++++++++++++++++++ src/logger/phosphor.cpp | 11 +++++++++++ src/logger/phosphor.hpp | 16 ++++++++++++++++ src/logger/types/ilogger.hpp | 15 +++++++++++++++ 7 files changed, 139 insertions(+) create mode 100644 src/logger/journal.cpp create mode 100644 src/logger/journal.hpp create mode 100644 src/logger/logger_set.cpp create mode 100644 src/logger/logger_set.hpp create mode 100644 src/logger/phosphor.cpp create mode 100644 src/logger/phosphor.hpp create mode 100644 src/logger/types/ilogger.hpp (limited to 'src/logger') 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 + +#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 +#include + +#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 + +#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 + +namespace smtp::logger::types +{ + class ILogger + { + public: + virtual ~ILogger() = default; + + virtual void LogError( std::string const& message ) const = 0; + }; + using ILoggerPtr = std::shared_ptr; +} \ No newline at end of file -- cgit v1.2.3 From a282ae6418c85db1aae5a2823dd37d56e56e5249 Mon Sep 17 00:00:00 2001 From: claiff Date: Tue, 20 Sep 2022 16:05:35 +0300 Subject: temp --- CMakeLists.txt | 14 +++++++++----- src/logger/logger_set.cpp | 5 +++-- src/logger/phosphor.cpp | 6 +++++- src/message/sender.hpp | 48 +++++++++++++++++++++++------------------------ src/service/smtp.cpp | 18 +++++++++--------- src/service/smtp.hpp | 12 +++--------- 6 files changed, 53 insertions(+), 50 deletions(-) (limited to 'src/logger') diff --git a/CMakeLists.txt b/CMakeLists.txt index e3e2153..56bc523 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,7 +86,6 @@ else() find_package (PkgConfig REQUIRED) pkg_check_modules (LOGGING phosphor-logging REQUIRED) - endif() include_directories(src) @@ -169,10 +168,6 @@ endif() add_executable(${PROJECT_NAME} ${SRC_FILES} ${PHOSPHOR_LOGGING_FILES}) -target_compile_definitions ( - ${PROJECT_NAME} PRIVATE $<$: -DADD_JOURNAL_LOGGING> -) - if(NOT ${YOCTO_DEPENDENCIES}) add_dependencies(${PROJECT_NAME} sdbusplus-project) elseif(${ADD_PHOSPHOR_LOGGING}) @@ -187,3 +182,12 @@ target_link_libraries(${PROJECT_NAME} curl) install(TARGETS ${PROJECT_NAME} DESTINATION bin) install(FILES ${PROJECT_SOURCE_DIR}/xyz.openbmc_project.SMTP.service DESTINATION /lib/systemd/system/) + +target_compile_definitions ( + ${PROJECT_NAME} PRIVATE $<$: -DADD_JOURNAL_LOGGING> + +) + +target_compile_definitions ( + ${PROJECT_NAME} PRIVATE $<$: -DADD_PHOSPHOR_LOGGING> +) diff --git a/src/logger/logger_set.cpp b/src/logger/logger_set.cpp index 8a061ed..6ea6d58 100644 --- a/src/logger/logger_set.cpp +++ b/src/logger/logger_set.cpp @@ -1,6 +1,7 @@ #include "logger_set.hpp" #include "journal.hpp" - +#include "phosphor.hpp" +#include namespace smtp::logger { std::shared_ptr < LoggerSet > LoggerSet::mInstance = nullptr; @@ -27,7 +28,7 @@ namespace smtp::logger loggers.push_back( std::make_shared < Journal >()); #endif #ifdef ADD_PHOSPHOR_LOGGING - loggers.push_back( std::make_shared < Journal >()); + loggers.push_back( std::make_shared < Phosphor >()); #endif mInstance.reset( new LoggerSet( loggers )); } diff --git a/src/logger/phosphor.cpp b/src/logger/phosphor.cpp index 48bb49e..d3c81b0 100644 --- a/src/logger/phosphor.cpp +++ b/src/logger/phosphor.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include "phosphor.hpp" @@ -6,6 +8,8 @@ namespace smtp::logger { void Phosphor::LogError( std::string const& message ) const { - phosphor::logging::log < phosphor::logging::level::ERR >( message.c_str()); + using InternalFailure = + sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure; + phosphor::logging::commit(message); } } \ No newline at end of file diff --git a/src/message/sender.hpp b/src/message/sender.hpp index ca2c3ff..d19e209 100644 --- a/src/message/sender.hpp +++ b/src/message/sender.hpp @@ -7,32 +7,32 @@ #include "managment/settings.hpp" #include "managment/mail.hpp" + namespace smtp::message { - struct WriteThis - { - int counter; - }; - - class Sender - { - public: - Sender( manage::Settings& settings_storage, manage::Mail const& mail_to ); - ~Sender() = default; - - bool Send( std::string const& mail_from, std::string const& subject, std::string const& text ); - private: - void UpdateMailText( std::string const& mail_from, std::string const& subject, std::string const& textt ) const; - void InitSenders( std::string const& mail_from, std::list const& mail_to ); - void FillRecipients(CURL* curl, curl_slist* recipients ); - std::string GetHostPortData() const; - static size_t ReadCallBack( void *ptr, size_t size, size_t nmemb, void *userp ); - - manage::Settings& mSettingsStorage; - manage::Mail const& mMailTo; - - bool InitCurl( CURL* curl, WriteThis const& upload_ctx, std::string const& mail_from ); - }; + struct WriteThis + { + int counter; + }; + + class Sender + { + public: + Sender( manage::Settings& settings_storage, manage::Mail const& mail_to ); + ~Sender() = default; + + bool Send( std::string const& mail_from, std::string const& subject, std::string const& text ); + private: + void UpdateMailText( std::string const& mail_from, std::string const& subject, std::string const& textt ) const; + void FillRecipients( CURL* curl, curl_slist* recipients ); + std::string GetHostPortData() const; + static size_t ReadCallBack( void* ptr, size_t size, size_t nmemb, void* userp ); + + manage::Settings& mSettingsStorage; + manage::Mail const& mMailTo; + + bool InitCurl( CURL* curl, WriteThis const& upload_ctx, std::string const& mail_from ); + }; } diff --git a/src/service/smtp.cpp b/src/service/smtp.cpp index 702de2d..7b1ca70 100644 --- a/src/service/smtp.cpp +++ b/src/service/smtp.cpp @@ -11,7 +11,7 @@ namespace smtp::service :mSettingsStorage(settings), mMailTo(mail_to) { CreateService( connection ); - CreateMessagerInterface( connection ); + CreateMessengerInterface( connection ); CreateSettingsManagerInterface( connection ); CreateMailManagerInterface( connection ); } @@ -27,17 +27,17 @@ namespace smtp::service connection->request_name( SMTP_BUS_NAME ); } - void Smtp::CreateMessagerInterface( ConnectionPtr connection ) + void Smtp::CreateMessengerInterface( ConnectionPtr connection ) { static constexpr char SMTP_OBJECT_NAME[] = "/xyz/openbmc_project/SMTP/Messenger"; static constexpr char SMTP_INTERFACE_NAME[] = "xyz.openbmc_project.Messenger"; mObjectServer = std::make_shared( connection ); - mMessagerInterface = mObjectServer->add_interface( SMTP_OBJECT_NAME, SMTP_INTERFACE_NAME ); + mMessengerInterface = mObjectServer->add_interface( SMTP_OBJECT_NAME, SMTP_INTERFACE_NAME ); - AddMessagerMethods(); + AddMessengerMethods(); - mMessagerInterface->initialize(); + mMessengerInterface->initialize(); } void Smtp::CreateSettingsManagerInterface(ConnectionPtr connection) @@ -66,13 +66,13 @@ namespace smtp::service mManagerMailInterface->initialize(); } - void Smtp::AddMessagerMethods() + void Smtp::AddMessengerMethods() { static constexpr char SMTP_SEND_MESSAGE_METHOD_NAME[] = "SendMail"; - mMessagerInterface->register_method(SMTP_SEND_MESSAGE_METHOD_NAME, [this]( std::string const& mail_from, - std::string const& theme, - std::string const& text ) + mMessengerInterface->register_method( SMTP_SEND_MESSAGE_METHOD_NAME, [this]( std::string const& mail_from, + std::string const& theme, + std::string const& text ) { return message::Sender{ mSettingsStorage, mMailTo }.Send( mail_from, theme, text );}); } diff --git a/src/service/smtp.hpp b/src/service/smtp.hpp index a52c9c0..edf964e 100644 --- a/src/service/smtp.hpp +++ b/src/service/smtp.hpp @@ -20,21 +20,15 @@ namespace smtp::service Smtp( ConnectionPtr connection, manage::Settings const& settings, manage::Mail const& mail_to ); ~Smtp() = default; private: - void FillStorageByDefault(); void CreateService( ConnectionPtr bus ); - void CreateMessagerInterface( ConnectionPtr connection ); + void CreateMessengerInterface( ConnectionPtr connection ); void CreateSettingsManagerInterface( ConnectionPtr connection ); void CreateMailManagerInterface( ConnectionPtr connection ); - void AddProperties(); - void AddMessagerMethods(); + void AddMessengerMethods(); void AddSettingsManagerMethods(); void AddMailManagerMethods(); - bool RefreshSettings( bool is_need_auth, bool is_need_ssl, - std::string const& user, std::string const& password, - std::string const& host, std::string const& port ); - - InterfacePtr mMessagerInterface; + InterfacePtr mMessengerInterface; InterfacePtr mManagerSettingsInterface; InterfacePtr mManagerMailInterface; -- cgit v1.2.3 From b8c1b47e32215cfa9f0483144ee643867ffc67c7 Mon Sep 17 00:00:00 2001 From: claiff Date: Fri, 23 Sep 2022 16:16:56 +0300 Subject: add phosphor logger --- CMakeLists.txt | 7 +-- src/checker/errors/settings/port_number.cpp | 11 ++-- src/file/mail.cpp | 8 ++- src/file/settings.cpp | 82 +++++++++++++++-------------- src/logger/journal.cpp | 2 +- src/logger/journal.hpp | 2 +- src/logger/logger_set.cpp | 4 +- src/logger/logger_set.hpp | 2 +- src/logger/phosphor.cpp | 12 ++--- src/logger/phosphor.hpp | 2 +- src/logger/types/ilogger.hpp | 5 +- src/message/sender.cpp | 8 +-- 12 files changed, 78 insertions(+), 67 deletions(-) (limited to 'src/logger') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9fe6741..ca5d5b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ project(smtp LANGUAGES CXX) cmake_policy(SET CMP0054 NEW) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fno-rtti") @@ -23,7 +23,7 @@ option ( option ( ADD_PHOSPHOR_LOGGING "All logging write to webui" - ON + OFF ) if(NOT ${YOCTO_DEPENDENCIES}) @@ -170,7 +170,8 @@ set(SRC_FILES ${CHECKER_DIR}/errors/types/isettings_error.hpp ) -if( ${ADD_PHOSPHOR_LOGGING} ) +if( ${ADD_PHOSPHOR_LOGGING} STREQUAL "ON") + message("hello") set(PHOSPHOR_LOGGING_FILES src/logger/phosphor.cpp src/logger/phosphor.hpp diff --git a/src/checker/errors/settings/port_number.cpp b/src/checker/errors/settings/port_number.cpp index b02eec4..73469cb 100644 --- a/src/checker/errors/settings/port_number.cpp +++ b/src/checker/errors/settings/port_number.cpp @@ -1,7 +1,7 @@ #include #include "port_number.hpp" -#include "management/logger.hpp" +#include "logger/logger_set.hpp" namespace smtp::checker::errors::settings { @@ -10,12 +10,13 @@ namespace smtp::checker::errors::settings static const std::string PORT_FIELD = "port"; static constexpr int MIN_PORT_NUMBER = 0; static constexpr int MAX_PORT_NUMBER = 65535; + static const std::string METHOD_NAME = "Check settings"; //TODO общее использование полей auto find = line.find( PORT_FIELD ); if( find == line.end() ) { - manage::Logger::LogError( "Port doesn't found" ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Port doesn't found" ); return false; } auto host_as_string = find->second; @@ -30,17 +31,17 @@ namespace smtp::checker::errors::settings } catch( std::invalid_argument const& ex ) { - manage::Logger::LogError( "Port doesn't entered by numbers" ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Port doesn't entered by numbers" ); return false; } catch( std::out_of_range const& ex ) { - manage::Logger::LogError( "Port out of range" ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Port out of range" ); return false; } catch( ... ) { - manage::Logger::LogError( "Port doesn't entered by numbers" ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Port doesn't entered by numbers" ); return false; } return host_as_int >= MIN_PORT_NUMBER && host_as_int <= MAX_PORT_NUMBER; diff --git a/src/file/mail.cpp b/src/file/mail.cpp index cf5fe26..2a2231b 100644 --- a/src/file/mail.cpp +++ b/src/file/mail.cpp @@ -13,10 +13,12 @@ namespace smtp::file manage::MailsSet Mail::Read() const { + static const std::string METHOD_NAME = "Read mails"; + std::ifstream mail_file{ mPathFile, std::fstream::in }; if ( !mail_file.is_open() ) { - manage::Logger::LogError( "Unable to open file to read " + mPathFile ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to read " + mPathFile ); return {}; } std::string line{}; @@ -35,10 +37,12 @@ namespace smtp::file bool Mail::Write( manage::MailsSet const& data ) const { + static const std::string METHOD_NAME = "Write mails"; + std::ofstream mail_file{ mPathFile, std::fstream::out | std::fstream::trunc }; if ( !mail_file.is_open() ) { - manage::Logger::LogError( "Unable to open file to write " + mPathFile ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to write " + mPathFile ); return false; } for( const auto& mail : data ) diff --git a/src/file/settings.cpp b/src/file/settings.cpp index 83f8322..70f3cf7 100644 --- a/src/file/settings.cpp +++ b/src/file/settings.cpp @@ -8,51 +8,53 @@ namespace smtp::file // //Constructors // - Settings::Settings( std::string const& path_file, checker::RegistratorSettings const& registrator_errors ) - : mPathFile( path_file ) - , mRegistratorErrors( registrator_errors ) - { + Settings::Settings( std::string const& path_file, checker::RegistratorSettings const& registrator_errors ) + : mPathFile( path_file ) + , mRegistratorErrors( registrator_errors ) + { - } + } // //Public methods // - manage::SettingsFields Settings::Read() const - { - auto parsed_store = GetParsedStore(); - return converter::Full{}.Convert( parsed_store ); - } + manage::SettingsFields Settings::Read() const + { + auto parsed_store = GetParsedStore(); + return converter::Full{}.Convert( parsed_store ); + } - bool Settings::Write( manage::SettingsFields const& settings_fields ) const - { - auto parsed_data = converter::Full{}.Convert( settings_fields ); + bool Settings::Write( manage::SettingsFields const& settings_fields ) const + { + auto parsed_data = converter::Full{}.Convert( settings_fields ); return mRegistratorErrors.Check( parsed_data ) && SetParsedData( parsed_data ); - } + } // //Private methods // manage::SettingsFileDataType Settings::GetParsedStore() const - { - std::ifstream settings_file{ mPathFile, std::fstream::in }; - if ( !settings_file.is_open() ) - { - manage::Logger::LogError( "Unable to open file to read " + mPathFile ); - return {}; - } + { + static const std::string METHOD_NAME = "Read settings"; + + std::ifstream settings_file{mPathFile, std::fstream::in}; + if( !settings_file.is_open()) + { + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to read " + mPathFile ); + return {}; + } auto result = GetDataFromFile( settings_file ); settings_file.close(); - return mRegistratorErrors.Check(result) ? result : manage::SettingsFileDataType{}; - } + return mRegistratorErrors.Check( result ) ? result : manage::SettingsFileDataType{}; + } manage::SettingsFileDataType Settings::GetDataFromFile( std::ifstream& settings_file ) const { std::string line{}; manage::SettingsFileDataType result; - while ( std::getline( settings_file, line ) ) + while( std::getline( settings_file, line )) { auto parsed_data = parser::Settings{}.Parse( line ); result.insert( parsed_data ); @@ -61,21 +63,23 @@ namespace smtp::file } bool Settings::SetParsedData( manage::SettingsFileDataType const& parsed_data ) const - { - std::ofstream settings_file{ mPathFile, std::fstream::out | std::fstream::trunc }; - if ( !settings_file.is_open() ) - { - manage::Logger::LogError( "Unable to open file to write " + mPathFile ); - return false; - } - for( const auto& data : parsed_data ) - { - auto line = BuildParam( data ); - settings_file << line << "\n"; - } - settings_file.close(); - return true; - } + { + static const std::string METHOD_NAME = "Write settings"; + + std::ofstream settings_file{mPathFile, std::fstream::out | std::fstream::trunc}; + if( !settings_file.is_open()) + { + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to write " + mPathFile ); + return false; + } + for( const auto& data: parsed_data ) + { + auto line = BuildParam( data ); + settings_file << line << "\n"; + } + settings_file.close(); + return true; + } std::string Settings::BuildParam( std::pair < std::string, std::string > const& data ) const { diff --git a/src/logger/journal.cpp b/src/logger/journal.cpp index 001e87d..ba002b0 100644 --- a/src/logger/journal.cpp +++ b/src/logger/journal.cpp @@ -4,7 +4,7 @@ namespace smtp::logger { - void Journal::LogError( std::string const& message ) const + void Journal::LogError( std::string const& method, std::string const& message ) const { std::cout << message << std::endl; } diff --git a/src/logger/journal.hpp b/src/logger/journal.hpp index 1b06b8c..0f1e6bb 100644 --- a/src/logger/journal.hpp +++ b/src/logger/journal.hpp @@ -11,7 +11,7 @@ namespace smtp::logger Journal() = default; ~Journal() override = default; - void LogError( std::string const& message ) const override; + void LogError( std::string const& method, std::string const& message ) const override; }; } diff --git a/src/logger/logger_set.cpp b/src/logger/logger_set.cpp index 6ea6d58..d5d45a0 100644 --- a/src/logger/logger_set.cpp +++ b/src/logger/logger_set.cpp @@ -33,11 +33,11 @@ namespace smtp::logger mInstance.reset( new LoggerSet( loggers )); } - void LoggerSet::LogError( std::string const& message ) + void LoggerSet::LogError( std::string const& method, std::string const& message ) { for( const auto& logger: mLogger ) { - logger->LogError( message ); + logger->LogError( method, message ); } } diff --git a/src/logger/logger_set.hpp b/src/logger/logger_set.hpp index fb74e56..e482042 100644 --- a/src/logger/logger_set.hpp +++ b/src/logger/logger_set.hpp @@ -19,7 +19,7 @@ namespace smtp::logger LoggerSet( const LoggerSet& ) = delete; LoggerSet& operator=( LoggerSet& ) = delete; - void LogError( std::string const& message ); + void LogError( std::string const& method, std::string const& message ); static std::shared_ptr < LoggerSet > GetInstance(); }; } diff --git a/src/logger/phosphor.cpp b/src/logger/phosphor.cpp index d3c81b0..f3575c4 100644 --- a/src/logger/phosphor.cpp +++ b/src/logger/phosphor.cpp @@ -1,15 +1,13 @@ -#include -#include -#include +#include #include "phosphor.hpp" namespace smtp::logger { - void Phosphor::LogError( std::string const& message ) const + void Phosphor::LogError( std::string const& method, std::string const& message ) const { - using InternalFailure = - sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure; - phosphor::logging::commit(message); + auto join_message = method + ',' + message; + const auto* msg = "OpenBMC.0.1.SMTPError"; + lg2::error("SMTP error", "REDFISH_MESSAGE_ID", msg, "REDFISH_MESSAGE_ARGS", join_message); } } \ No newline at end of file diff --git a/src/logger/phosphor.hpp b/src/logger/phosphor.hpp index dd536b5..f40ddf2 100644 --- a/src/logger/phosphor.hpp +++ b/src/logger/phosphor.hpp @@ -11,6 +11,6 @@ namespace smtp::logger Phosphor() = default; ~Phosphor() override = default; - void LogError( std::string const& message ) const override; + void LogError( std::string const& method, std::string const& message ) const override; }; } diff --git a/src/logger/types/ilogger.hpp b/src/logger/types/ilogger.hpp index 9f88668..5dce1d5 100644 --- a/src/logger/types/ilogger.hpp +++ b/src/logger/types/ilogger.hpp @@ -9,7 +9,8 @@ namespace smtp::logger::types public: virtual ~ILogger() = default; - virtual void LogError( std::string const& message ) const = 0; + virtual void LogError( std::string const& method, std::string const& message ) const = 0; }; - using ILoggerPtr = std::shared_ptr; + + using ILoggerPtr = std::shared_ptr < ILogger >; } \ No newline at end of file diff --git a/src/message/sender.cpp b/src/message/sender.cpp index 5845628..85c5d5d 100644 --- a/src/message/sender.cpp +++ b/src/message/sender.cpp @@ -29,6 +29,8 @@ namespace smtp::message bool Sender::Send( std::string const& mail_from, std::string const& subject, std::string const& text ) { + static const std::string METHOD_NAME = "Send message"; + CURLcode result = CURLE_OK; curl_slist* recipients = nullptr; WriteThis upload_ctx{}; @@ -38,14 +40,14 @@ namespace smtp::message mSettingsStorage.ReloadSettings(); if( !InitCurl( curl, upload_ctx, mail_from )) { - logger::LoggerSet::GetInstance()->LogError( "Error to initializate curl" ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Error to initializate message service" ); return false; } //TODO раздать mail_to другим методам auto mail_to = mMailTo.GetMailToSend(); if( mail_to.empty()) { - logger::LoggerSet::GetInstance()->LogError( "We haven't any mail to" ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "We haven't any mail to" ); return false; } FillRecipients( curl, recipients ); @@ -56,7 +58,7 @@ namespace smtp::message if( result != CURLE_OK ) { std::string message = "Error to send messge: " + std::string( curl_easy_strerror( result )); - logger::LoggerSet::GetInstance()->LogError( message ); + logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, message ); return false; } //TODO сделать деинициализацию через регистратор деинициализаторов -- cgit v1.2.3