You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.2 KiB
C++
55 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#include "fmt/format.h"
|
|
#include "fmt/args.h"
|
|
|
|
#include "DllDefines.h"
|
|
|
|
class UTILITYDLL CLogger
|
|
{
|
|
public:
|
|
CLogger(const std::string& strName);
|
|
virtual ~CLogger();
|
|
|
|
void Start();
|
|
void Stop();
|
|
void SetEnable(bool bEnable) { m_bEnable = bEnable; }
|
|
void Log(const std::string& strMsg);
|
|
|
|
template <typename... Args>
|
|
void Log(fmt::format_string<Args...> _fmt, Args&&... args)
|
|
{
|
|
try
|
|
{
|
|
std::vector<char> buf;
|
|
|
|
fmt::vformat_to(std::back_inserter(buf), _fmt, fmt::make_format_args(args...));
|
|
|
|
std::string log_msg(std::string_view(buf.data(), buf.size()));
|
|
Log(log_msg);
|
|
}
|
|
catch (...)
|
|
{
|
|
}
|
|
}
|
|
|
|
protected:
|
|
bool IsEnable() const { return m_bEnable; }
|
|
std::string GetName() { return m_strName; }
|
|
|
|
private:
|
|
virtual void DoStart() = 0;
|
|
virtual void DoFlush() = 0;
|
|
virtual void DoLogging(const std::string& strMsg) = 0;
|
|
|
|
std::string m_strName;
|
|
bool m_bEnable{ false };
|
|
bool m_bRotating{ true };
|
|
int m_nFileSizeMB{ 1 };
|
|
|
|
//
|
|
};
|
|
|