#pragma once
#include "MICmnBase.h"
#include "MICmnLog.h"
#include "MIUtilDateTimeStd.h"
#include "MIUtilFileStd.h"
#include "MIUtilString.h"
class CMICmnLogMediumFile : public CMICmnBase, public CMICmnLog::IMedium {
public:
static CMICmnLogMediumFile &Instance();
public:
bool SetHeaderTxt(const CMIUtilString &vText);
bool SetVerbosity(const MIuint veType);
MIuint GetVerbosity() const;
const CMIUtilString &GetFileName() const;
const CMIUtilString &GetFileNamePath() const;
bool IsOk() const;
bool IsFileExist() const;
const CMIUtilString &GetLineReturn() const;
bool SetDirectory(const CMIUtilString &vPath);
public:
~CMICmnLogMediumFile() override;
bool Initialize() override;
const CMIUtilString &GetName() const override;
bool Write(const CMIUtilString &vData,
const CMICmnLog::ELogVerbosity veType) override;
const CMIUtilString &GetError() const override;
bool Shutdown() override;
private:
CMICmnLogMediumFile();
CMICmnLogMediumFile(const CMICmnLogMediumFile &);
void operator=(const CMICmnLogMediumFile &);
bool FileWriteEnglish(const CMIUtilString &vData);
bool FileFormFileNamePath();
CMIUtilString MassagedData(const CMIUtilString &vData,
const CMICmnLog::ELogVerbosity veType);
bool FileWriteHeader();
char ConvertLogVerbosityTypeToId(const CMICmnLog::ELogVerbosity veType) const;
CMIUtilString ConvertCr(const CMIUtilString &vData) const;
private:
const CMIUtilString m_constThisMediumName;
const CMIUtilString m_constMediumFileNameFormat;
CMIUtilString m_strMediumFileName;
CMIUtilString m_strMediumFileDirectory;
CMIUtilString m_fileNamePath;
MIuint m_eVerbosityType;
CMIUtilString m_strDate;
CMIUtilString m_fileHeaderTxt;
CMIUtilFileStd m_file;
CMIUtilDateTimeStd m_dateTime;
};