1 //===-- MICmnLogMediumFile.h ------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #pragma once 11 12 // In-house headers: 13 #include "MICmnBase.h" 14 #include "MICmnLog.h" 15 #include "MIUtilDateTimeStd.h" 16 #include "MIUtilFileStd.h" 17 #include "MIUtilString.h" 18 19 //++ 20 //============================================================================ 21 // Details: MI common code implementation class. Logs application fn 22 // trace/message/ 23 // error messages to a file. Used as part of the CMICmnLog Logger 24 // system. When instantiated *this object is register with the Logger 25 // which the Logger when given data to write to registered medium comes 26 // *this medium. 27 // Singleton class. 28 //-- 29 class CMICmnLogMediumFile : public CMICmnBase, public CMICmnLog::IMedium { 30 // Statics: 31 public: 32 static CMICmnLogMediumFile &Instance(); 33 34 // Methods: 35 public: 36 bool SetHeaderTxt(const CMIUtilString &vText); 37 bool SetVerbosity(const MIuint veType); 38 MIuint GetVerbosity() const; 39 const CMIUtilString &GetFileName() const; 40 const CMIUtilString &GetFileNamePath() const; 41 bool IsOk() const; 42 bool IsFileExist() const; 43 const CMIUtilString &GetLineReturn() const; 44 bool SetDirectory(const CMIUtilString &vPath); 45 46 // Overridden: 47 public: 48 // From CMICmnBase 49 /* dtor */ ~CMICmnLogMediumFile() override; 50 // From CMICmnLog::IMedium 51 bool Initialize() override; 52 const CMIUtilString &GetName() const override; 53 bool Write(const CMIUtilString &vData, 54 const CMICmnLog::ELogVerbosity veType) override; 55 const CMIUtilString &GetError() const override; 56 bool Shutdown() override; 57 58 // Methods: 59 private: 60 /* ctor */ CMICmnLogMediumFile(); 61 /* ctor */ CMICmnLogMediumFile(const CMICmnLogMediumFile &); 62 void operator=(const CMICmnLogMediumFile &); 63 64 bool FileWriteEnglish(const CMIUtilString &vData); 65 bool FileFormFileNamePath(); 66 CMIUtilString MassagedData(const CMIUtilString &vData, 67 const CMICmnLog::ELogVerbosity veType); 68 bool FileWriteHeader(); 69 char ConvertLogVerbosityTypeToId(const CMICmnLog::ELogVerbosity veType) const; 70 CMIUtilString ConvertCr(const CMIUtilString &vData) const; 71 72 // Attributes: 73 private: 74 const CMIUtilString m_constThisMediumName; 75 const CMIUtilString m_constMediumFileNameFormat; 76 // 77 CMIUtilString m_strMediumFileName; 78 CMIUtilString m_strMediumFileDirectory; 79 CMIUtilString m_fileNamePath; 80 MIuint m_eVerbosityType; 81 CMIUtilString m_strDate; 82 CMIUtilString m_fileHeaderTxt; 83 CMIUtilFileStd m_file; 84 CMIUtilDateTimeStd m_dateTime; 85 }; 86