#pragma once
#include <string>
#include <memory>

#include "spdlog/spdlog.h"

#include "Logger.h"

#include "DllDefines.h"
#include "LogSettings.h"

namespace mitech::utils::logging
{

    class UTILITYDLL CMitechDebugLog : public CLogger
    {
    public:
        explicit CMitechDebugLog(const std::string& strName, const stLogOption& mySetting);
        ~CMitechDebugLog() 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\DebugLog.log)" };
    };
}