spdlog封装加上文件名、函数名、行号
以下是封装的部分头文件。
·
#define __FILENAME__ (strrchr(__FILE__, '/')?(strrchr(__FILE__, '/') + 1 ):__FILE__)
#define spdlogWrapHandle spdlogWrap::spdlogWrap::GetInstance()
#define log_trace(...) spdlogWrapHandle->log_trace( __FILENAME__,__func__, __LINE__,__VA_ARGS__)
#define log_debug(...) spdlogWrapHandle->log_debug( __FILENAME__,__func__, __LINE__,__VA_ARGS__)
#define log_info(...) spdlogWrapHandle->log_info( __FILENAME__,__func__, __LINE__,__VA_ARGS__)
#define log_warn(...) spdlogWrapHandle->log_warn( __FILENAME__,__func__, __LINE__,__VA_ARGS__)
#define log_err(...) spdlogWrapHandle->log_err( __FILENAME__,__func__, __LINE__,__VA_ARGS__)
以上是接口,
以下是封装的部分头文件
#pragma once
#include <vector>
#include <string>
namespace spdlogWrap
{
typedef enum
{
trace = 0,
debug = 1,
info = 2,
warn = 3,
err = 4,
critical = 5,
off = 6
} level_enum;
class spdlogWrap
{
private:
public:
spdlogWrap() { ; }
static spdlogWrap *GetInstance()
{
static spdlogWrap *m_instance = NULL;
if ( m_instance == NULL )
{
m_instance = new spdlogWrap;
}
return m_instance;
}
void log_trace(const char *filename,const char *Func,const int Line,const char * Format, ... );
void log_debug(const char *filename,const char *Func,const int Line,const char * Format, ... );
void log_info(const char *filename,const char *Func,const int Line,const char * Format, ... );
void log_warn(const char *filename,const char *Func,const int Line,const char * Format, ... );
void log_err(const char *filename,const char *Func,const int Line,const char * Format, ... );
};
}
void spdlogWrap::log_trace(const char *filename,const char *Func,const int Line,const char * Format, ... )
{
va_list args;
va_start(args, Format);
char tmpbuf[MAX_ONELOG_LENGTH];
vsnprintf(tmpbuf,MAX_ONELOG_LENGTH-1,Format,args);
console_logger->trace("<{} {}:{}> {}", filename ,Func, Line ,tmpbuf);
file_logger->trace("<{} {}:{}> {}", filename, Func, Line ,tmpbuf);
va_end(args);
}
void spdlogWrap::log_debug(const char *filename,const char *Func,const int Line,const char * Format, ... )
{
va_list args;
va_start(args, Format);
char tmpbuf[MAX_ONELOG_LENGTH];
vsnprintf(tmpbuf,MAX_ONELOG_LENGTH-1,Format,args);
console_logger->debug("<{} {}:{}> {}", filename ,Func, Line ,tmpbuf);
file_logger->debug("<{} {}:{}> {}", filename, Func, Line ,tmpbuf);
va_end(args);
}
void spdlogWrap::log_info(const char *filename,const char *Func,const int Line,const char * Format, ... )
{
va_list args;
va_start(args, Format);
char tmpbuf[MAX_ONELOG_LENGTH];
vsnprintf(tmpbuf,MAX_ONELOG_LENGTH-1,Format,args);
console_logger->info("<{} {}:{}> {}", filename ,Func, Line ,tmpbuf);
file_logger->info("<{} {}:{}> {}", filename, Func, Line ,tmpbuf);
va_end(args);
}
void spdlogWrap::log_warn(const char *filename,const char *Func,const int Line,const char * Format, ... )
{
va_list args;
va_start(args, Format);
char tmpbuf[MAX_ONELOG_LENGTH];
vsnprintf(tmpbuf,MAX_ONELOG_LENGTH-1,Format,args);
console_logger->warn("<{} {}:{}> {}", filename ,Func, Line ,tmpbuf);
file_logger->warn("<{} {}:{}> {}", filename, Func, Line ,tmpbuf);
va_end(args);
}
void spdlogWrap::log_err(const char *filename,const char *Func,const int Line,const char * Format, ... )
{
va_list args;
va_start(args, Format);
char tmpbuf[MAX_ONELOG_LENGTH];
vsnprintf(tmpbuf,MAX_ONELOG_LENGTH-1,Format,args);
console_logger->error("<{} {}:{}> {}", filename ,Func, Line ,tmpbuf);
file_logger->error("<{} {}:{}> {}", filename, Func, Line ,tmpbuf);
va_end(args);
}
以下是引用例子
while(1)
{
i++;
spdlog_debug("test spdlog_debug() %d %s %c",i,"spdlog log! ", 'A');
spdlog_info("test spdlog_info() %d %s %c",i,"spdlog log! ", 'A');
log_debug("test log_debug() %s ,%c %d", "abc",((char )i < 'z' && (char )i > '0' )? (char)i :'a' , i);
log_debug("test log_debug()");
sleep(1);
if(i == 90)
{ log_warn("test log_warn()=============%d %s %c",i+1,"spdlog log! ", 'A'); break;}
}
以下是效果
更多推荐
所有评论(0)