Train_Identify/ai_matrix/myshell/myshell.cpp

84 lines
2.3 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "myshell.h"
namespace ai_matrix
{
const int TIME_SIZE = 32;
const int TIME_DIFF = 28800; // 8 hour
std::mutex MyShell::mutex;
uint32_t MyShell::shellLevel = SHELL_LEVEL_INFO;
std::vector<std::string> MyShell::levelString{"[Debug]", "[Info ]", "[Warn ]", "[Error]", "[Fatal]"};
MyShell::MyShell(std::string file, std::string function, int line, uint32_t level)
: myLevel_(level), file_(file), function_(function), line_(line)
{
}
MyShell::~MyShell()
{
if (myLevel_ >= shellLevel)
{
std::lock_guard<std::mutex> locker(mutex);
// cout to screen
std::cout << ss_.str() << std::endl;
}
};
std::ostringstream &MyShell::Stream()
{
if (myLevel_ >= shellLevel)
{
struct timeval time = {0, 0};
gettimeofday(&time, nullptr);
time_t timep = time.tv_sec + TIME_DIFF; //加上8小时
struct tm *ptm = gmtime(&timep); //返回tm结构的格林尼治时间GMT
char timeString[TIME_SIZE] = {0};
//%F 年-月-日 %X 标准的时间串
strftime(timeString, TIME_SIZE, "[%F %X:", ptm);
long int usValue = time.tv_usec;
date_ = timeString;
ss_.fill('0');
ss_ << levelString[myLevel_] << timeString << std::setw(3) << usValue / 1000 << "]";
std::string fileName = file_.substr(file_.rfind('/') + 1);
ss_ << "[" << fileName << " " << function_ << ":" << line_ << "] ";
}
return ss_;
}
void MyShell::ShellDebugOn()
{
shellLevel = SHELL_LEVEL_DEBUG;
return;
}
void MyShell::ShellInfoOn()
{
shellLevel = SHELL_LEVEL_INFO;
return;
}
void MyShell::ShellWarnOn()
{
shellLevel = SHELL_LEVEL_WARN;
return;
}
void MyShell::ShellErrorOn()
{
shellLevel = SHELL_LEVEL_ERROR;
return;
}
void MyShell::ShellFatalOn()
{
shellLevel = SHELL_LEVEL_FATAL;
return;
}
void MyShell::ShellAllOn()
{
shellLevel = SHELL_LEVEL_DEBUG;
return;
}
void MyShell::ShellAllOff()
{
shellLevel = SHELL_LEVEL_NONE;
return;
}
} // namespace matrix_common