基础库-C++开源日志代码spdlog

sdplog只需直接加入到工程,指定路径,只需include头文件,可以直接使用,非常方便。

头文件:

#include "spdlog/spdlog.h"
#include "spdlog/sinks/rotating_file_sink.h"



//log
	std::shared_ptr<spdlog::logger> m_pLogger;

cpp文件:

我希望每个log文件最大存储10M,然后写另外一个文件;

我还希望输出debug等级的log

我还希望不要缓冲,立即写入文件

我还希望。。。

//log 初始化	
 Create a file rotating logger with 10mb size max and 3 rotated files
	m_pLogger = spdlog::rotating_logger_mt("1", "logs/log.txt", 1048576 * 10, 3);//多线程
	//m_pLogger = spdlog::rotating_logger_st("8k", "logs/ymlog.txt", 1048576 * 10, 3);//单线程

    //log内容直接写入,不要缓冲
	m_pLogger->flush_on(spdlog::level::level_enum::debug);

    //设置log level
	m_pLogger->set_level(spdlog::level::level_enum::debug);

	m_pLogger->info("... ... init ... ... \r\n");

如果想在error发生时,马上写入文件;但是info debug等,可以缓冲一下再写入

m_pLogger->flush_on(spdlog::level::level_enum::err);

简单的接口封装

#ifndef _COMMON_H_
#define _COMMON_H_


#include "spdlog/spdlog.h"
#include "spdlog/sinks/rotating_file_sink.h"


std::shared_ptr<spdlog::logger> g_logger;

void InitLog()
{
    if(!g_logger)
    {
        //10M一个文件,最多存3个文件
        g_logger = spdlog::rotating_logger_st("RTC","logs/rtclog.txt",1048576*10,3);
        g_logger->set_level(spdlog::level::level_enum::debug);
        //info日志,实时写入文件
        g_logger->flush_on(spdlog::level::level_enum::info);
    }
}

void UinitLog()
{
    if(g_logger)
    {
        spdlog::drop_all();
    }
}

//debug
#define LOG_D(...) SPDLOG_LOGGER_CALL(g_logger, spdlog::level::debug, __VA_ARGS__)
//info
#define LOG_I(...) SPDLOG_LOGGER_CALL(g_logger, spdlog::level::info, __VA_ARGS__)
//warn
#define LOG_W(...) SPDLOG_LOGGER_CALL(g_logger, spdlog::level::warn, __VA_ARGS__)
//error
#define LOG_E(...) SPDLOG_LOGGER_CALL(g_logger, spdlog::level::err, __VA_ARGS__)



#endif //_COMMON_H_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值