同步异步日志系统
一、项目目录结构
example:如何使用项目的具体样例
extend:扩展代码
logs:项目的各个模块,项目源码
pratice:练习代码,项目前置学习的代码
bench:用来进行性能测试
整理完成后,目录结构如下(注意:扩展代码和具体样例代码一定要进行测试)
一、功能测试
// 测试代码
#include "../logs/logslearn.h"
//进行功能测试
void test_log(const std::string &name){
INFO( "%s", "测试开始");
logslearn::Logger::ptr logger=logslearn::LoggerManager::getInstance().getLogger(name);
//测试日志打印
logger->debug( "%s", "测试日志");
logger->info( "%s", "测试日志");
logger->warn( "%s", "测试日志");
logger->error( "%s", "测试日志");
logger->fatal("%s", "测试日志");
INFO( "%s", "测试结束");
}
int main()
{
std::unique_ptr<logslearn::LoggerBuilder> builder(new logslearn::GlobalLoggerBuilder());
//建造者构建零部件
builder->buildLoggerName("async_logger");
builder->buildLoggerLevel(logslearn::loglevel::value::DEBUG);
builder->buildLoggerFormatter("[%d{%H:%M:%S}][%t][%c][%p]%m%n");
builder->buildLoggerType(logslearn::LoggerType::LOGGER_SYNC);
builder->buildSink<logslearn::StdoutSink>(); // 标准输出落地
builder->buildSink<logslearn::FileSink>("./logfile/async.log"); // 文件落地方式
builder->buildSink<logslearn::RoolBySizeSink>("./logfile/roll-", 1024 * 1024); // 滚动文件落地方式
builder->build();
test_log("async_logger");