#pragma once
#include "Common.h"
#include "Extensions/Logging/ILogger.h"
#include "Extensions/Logging/LoggerConfiguration.h"


namespace DotNetDupe {
    namespace Extensions {
        namespace Logging {

            class LoggerBase : public ILogger {
            protected:
                DotNetDupe::System::String m_categoryName;
                LoggerConfiguration m_config;

                DotNetDupe::System::String FormatLogLine(const DotNetDupe::System::String& fmt, const DotNetDupe::System::String& timestamp, const DotNetDupe::System::String& level, const DotNetDupe::System::String& category, const DotNetDupe::System::String& message, const DotNetDupe::System::String& properties, const DotNetDupe::System::String& processId, const DotNetDupe::System::String& threadId) const;
                DotNetDupe::System::String GetFormattedTimestamp(const DotNetDupe::System::String& formatFmt) const;
                const char* LogLevelToString(LogLevel level) const;

                DotNetDupe::System::String BuildLogMessage(LogLevel logLevel, const DotNetDupe::System::String& message, 
                                            const DotNetDupe::System::Collections::Generic::Dictionary<DotNetDupe::System::String, DotNetDupe::System::String>& properties) const;

            public:
                DOTNETDUPE_API LoggerBase(const DotNetDupe::System::String& categoryName, const LoggerConfiguration& config);
                DOTNETDUPE_API ~LoggerBase() override = default;

                DOTNETDUPE_API bool IsEnabled(LogLevel logLevel) const override;
                DOTNETDUPE_API void Log(LogLevel logLevel, const DotNetDupe::System::String& message) override;
                DOTNETDUPE_API void Log(LogLevel logLevel, const DotNetDupe::System::String& message, 
                                         const DotNetDupe::System::Collections::Generic::Dictionary<DotNetDupe::System::String, DotNetDupe::System::String>& properties) override = 0;
            };

        }
    }
}

Generated by OpenCppCoverage (Version: 0.9.9.0)