手撸日志库
先附上代码:
// 手撸日志.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include<fstream>
#include<ctime>
#include <chrono>
using namespace std;
class Interface
{
virtual void lo() = 0;//
};
class Implementation:public Interface
{
public:
enum leix//和enum class leix有什么区别
{
DEBUG,
INFO,
WARNING,
ERROR
};
static void log(leix a,string message)
{
string k;
if (a == DEBUG)
k = "DEBUG";
else if (a == INFO)
k = "INFO";
else if (a == WARNING)
k = "WARNING";
else if(a==ERROR)
k="ERROR";
else
{
cout << "!!!error";
return;
}
// 获取当前系统时间
auto now = std::chrono::system_clock::now();
// 转换为时间戳
time_t time = std::chrono::system_clock::to_time_t(now);//chrono是一个作用域,system_clock是一个结构体。
// 将时间戳转换为本地时间结构体
tm local_time{};
#ifdef _WIN32
localtime_s(&local_time, &time);
#else
localtime_r(&time, &local_time);
#endif
// 输出当前年份、月份、日期、小时和分钟
std::ofstream outputFile("output.txt",ofstream::app);//app的意思是不覆盖
outputFile <<"[" << (local_time.tm_year + 1900) << "-" << (local_time.tm_mon + 1) << "-"
<< local_time.tm_mday << " " << local_time.tm_hour << ":" << local_time.tm_min <<"]" << " ";
outputFile << "["<<k<<"]" << " " << message << endl;
}
};
int main()
{
Implementation::log(Implementation::DEBUG,"this is debug");
Implementation::log(Implementation::INFO,"this is info");
Implementation::log(Implementation::WARNING,"this is warning");
Implementation::log(Implementation::ERROR,"this is error");
}
日志库功能为能在本地简单记录编译的一些情况,说白了就是编译的情况通过文件读写的方式记录在本地文件下。
不了解部分欢迎评论,博客会慢慢更新......