#pragma once

#include <memory>
#include <string>

#include "spdlog/spdlog.h"

#include "Logger.h"
#include "LogSettings.h"

namespace mitech::utils::logging
{
    class CMitechSGDebugLog : public CLogger
    {
    public:
        explicit CMitechSGDebugLog(const std::string& strName, const stLogOption& mySetting);
        ~CMitechSGDebugLog() final;

    private:
        void InitLogger(const stLogOption& mySetting);

        // Inherited via CLogger
        void DoStart() override;
        void DoFlush() override;
        void DoLogging(const std::string& strMsg) override;
        void DoTrace(const std::string& strMsg) override;
        void DoInfo(const std::string& strMsg) override;
        void DoError(const std::string& strMsg) override;

        std::shared_ptr<spdlog::logger> m_logger;
        std::string                     m_strPathFilename{ R"(d:\machine\log\SGDebugLog.log)" };
    };
}