llvm-project/lldb/tools/lldb-mi/MICmnLogMediumFile.h

85 lines
2.8 KiB
C++

//===-- MICmnLogMediumFile.h ------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#pragma once
// In-house headers:
#include "MICmnBase.h"
#include "MICmnLog.h"
#include "MIUtilDateTimeStd.h"
#include "MIUtilFileStd.h"
#include "MIUtilString.h"
//++
//============================================================================
// Details: MI common code implementation class. Logs application fn
// trace/message/
// error messages to a file. Used as part of the CMICmnLog Logger
// system. When instantiated *this object is register with the Logger
// which the Logger when given data to write to registered medium comes
// *this medium.
// Singleton class.
//--
class CMICmnLogMediumFile : public CMICmnBase, public CMICmnLog::IMedium {
// Statics:
public:
static CMICmnLogMediumFile &Instance();
// Methods:
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);
// Overridden:
public:
// From CMICmnBase
/* dtor */ ~CMICmnLogMediumFile() override;
// From CMICmnLog::IMedium
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;
// Methods:
private:
/* ctor */ CMICmnLogMediumFile();
/* ctor */ 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;
// Attributes:
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;
};