generated from zhangwei/Matrixai
100 lines
1.7 KiB
C++
100 lines
1.7 KiB
C++
// PHZ
|
|
// 2018-5-15
|
|
|
|
#if defined(WIN32) || defined(_WIN32)
|
|
#ifndef _CRT_SECURE_NO_WARNINGS
|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
#endif
|
|
#endif
|
|
|
|
#include "Logger.h"
|
|
#include "Timestamp.h"
|
|
#include <stdarg.h>
|
|
#include <iostream>
|
|
|
|
using namespace xop;
|
|
|
|
const char* Priority_To_String[] =
|
|
{
|
|
"DEBUG",
|
|
"CONFIG",
|
|
"INFO",
|
|
"WARNING",
|
|
"ERROR"
|
|
};
|
|
|
|
Logger::Logger()
|
|
{
|
|
|
|
}
|
|
|
|
Logger& Logger::Instance()
|
|
{
|
|
static Logger s_logger;
|
|
return s_logger;
|
|
}
|
|
|
|
Logger::~Logger()
|
|
{
|
|
|
|
}
|
|
|
|
void Logger::Init(char *pathname)
|
|
{
|
|
std::unique_lock<std::mutex> lock(mutex_);
|
|
|
|
if (pathname != nullptr) {
|
|
ofs_.open(pathname, std::ios::out | std::ios::binary);
|
|
if (ofs_.fail())
|
|
{
|
|
std::cerr << "Failed to open logfile." << std::endl;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Logger::Exit()
|
|
{
|
|
std::unique_lock<std::mutex> lock(mutex_);
|
|
|
|
if (ofs_.is_open()) {
|
|
ofs_.close();
|
|
}
|
|
}
|
|
|
|
void Logger::Log(Priority priority, const char* __file, const char* __func, int __line, const char *fmt, ...)
|
|
{
|
|
std::unique_lock<std::mutex> lock(mutex_);
|
|
|
|
char buf[2048] = {0};
|
|
sprintf(buf, "[%s][%s:%s:%d] ", Priority_To_String[priority], __file, __func, __line);
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
vsprintf(buf + strlen(buf), fmt, args);
|
|
va_end(args);
|
|
this->Write(std::string(buf));
|
|
}
|
|
|
|
void Logger::Log2(Priority priority, const char *fmt, ...)
|
|
{
|
|
std::unique_lock<std::mutex> lock(mutex_);
|
|
|
|
char buf[4096] = { 0 };
|
|
sprintf(buf, "[%s] ", Priority_To_String[priority]);
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
vsprintf(buf + strlen(buf), fmt, args);
|
|
va_end(args);
|
|
this->Write(std::string(buf));
|
|
}
|
|
|
|
void Logger::Write(std::string info)
|
|
{
|
|
if (ofs_.is_open()) {
|
|
ofs_ << "[" << Timestamp::Localtime() << "]"
|
|
<< info << std::endl;
|
|
}
|
|
|
|
std::cout << "[" << Timestamp::Localtime() << "]"
|
|
<< info << std::endl;
|
|
}
|