Program Listing for File logger.h#
↰ Return to documentation for file (core\logger.h)
#ifndef LOGGER_H
#define LOGGER_H
#include <interfaces/log.h>
#include <support/interface_ptr.h>
#include <support/component_impl.h>
#include "log_csv_writer.h"
class CLogger : public sdv::IInterfaceAccess, public sdv::core::ILogger, public sdv::core::ILoggerConfig
{
public:
CLogger() = default;
~CLogger();
// Interface table
BEGIN_SDV_INTERFACE_MAP()
SDV_INTERFACE_ENTRY(sdv::core::ILogger)
SDV_INTERFACE_ENTRY(sdv::core::ILoggerConfig)
END_SDV_INTERFACE_MAP()
virtual void Log(/*in*/ sdv::core::ELogSeverity eSeverity, /*in*/ const sdv::u8string& ssSrcFile, /*in*/ uint32_t uiSrcLine,
/*in*/ sdv::process::TProcessID tProcessID, /*in*/ const sdv:: u8string& ssObjectName, /*in*/ const sdv::u8string& ssMessage) override;
virtual void SetProgramTag(/*in*/ const sdv::u8string& ssTag) override;
virtual sdv::u8string GetProgramTag() const override;
virtual void SetLogFilter(/*in*/ sdv::core::ELogSeverity eSeverity, /*in*/ sdv::core::ELogSeverity eViewSeverity) override;
virtual sdv::core::ELogSeverity GetLogFilter() const override;
virtual sdv::core::ELogSeverity GetViewFilter() const override;
private:
static std::string GetDateTime(std::chrono::time_point<std::chrono::system_clock> timestamp);
std::recursive_mutex m_mtxLogger;
sdv::core::ELogSeverity m_eFilter = sdv::core::ELogSeverity::info;
sdv::core::ELogSeverity m_eViewFilter = sdv::core::ELogSeverity::info;
std::string m_ssProgramtag;
#ifdef _WIN32
std::unique_ptr<CLogCSVWriter> m_ptrWriter;
#elif defined __unix__
bool m_bLogOpen = false;
#else
#error OS currently not supported!
#endif
};
#ifndef DO_NOT_INCLUDE_IN_UNIT_TEST
class CLoggerService : public sdv::CSdvObject
{
public:
CLoggerService() = default;
// Interface map
BEGIN_SDV_INTERFACE_MAP()
SDV_INTERFACE_CHAIN_MEMBER(GetDefaultLogger())
END_SDV_INTERFACE_MAP()
// Object declarations
DECLARE_OBJECT_CLASS_TYPE(sdv::EObjectType::SystemObject)
DECLARE_OBJECT_CLASS_NAME("DefaultLoggerService")
DECLARE_OBJECT_SINGLETON()
static CLogger& GetDefaultLogger();
};
DEFINE_SDV_OBJECT_NO_EXPORT(CLoggerService)
#endif
#endif // !defined LOGGER_H