0
0
Files
build/lib/liblog.cpp

90 lines
2.1 KiB
C++
Raw Permalink Normal View History

#include "liblog.h"
#include "json.hpp"
#include <time.h>
#include <fstream>
#include <iostream>
using namespace nlohmann;
using namespace std;
void spdlog_initz(string path)
{
json log_j;
ifstream fin(path);
if(!fin)
{
cout<<"Log配置文件打开失败!"<<endl;
return;
}
if(fin.good())
{
fin>>log_j;
}
cout<<"log配置文件读取完毕!"<<endl;
auto max_size = log_j["log_max_size"].get<int>(); //1024*1024*10 每个日志文件大小10M
auto max_files = log_j["log_max_files"].get<int>(); //三个日志文件
auto write_freq = log_j["log_write_freq"].get<int>(); //每write_freq秒写入一次log日志
auto level = log_j["log_level"].get<string>(); //日志级别
fin.close();
time_t time_utc = {0};
char buf[128] = {0};
tm *local;
time_utc = time(NULL);
local = localtime(&time_utc);
strftime(buf,64,"%Y-%m-%d-%H-%M",local);
auto logger = spdlog::rotating_logger_mt("log", "logs/CPU-"+(string)buf+".txt", max_size, max_files);
// auto console = spdlog::stdout_color_mt("console");
// auto err_logger = spdlog::stderr_color_mt("stderr");
// spdlog::get("console")->info("loggers can be retrieved from a global registry using the spdlog::get(logger_name)");
spdlog::set_pattern("[%H:%M:%S] [%^---%L---%$] [thread %t] %v");
spdlog::flush_every(std::chrono::seconds(write_freq)); //每10s写入文件一次
if(level =="info")
{
logger->set_level(spdlog::level::info);
}
else if(level =="warn")
{
logger->set_level(spdlog::level::warn);
}
else if(level =="error")
{
logger->set_level(spdlog::level::err);
}
else if(level =="debug")
{
logger->set_level(spdlog::level::debug);
}
else if(level =="critical")
{
logger->set_level(spdlog::level::critical);
}
else if(level =="trace")
{
logger->set_level(spdlog::level::trace);
}
else
{
logger->set_level(spdlog::level::info);
}
spdlog::set_default_logger(logger);
}