sylar
sylar copied to clipboard
日志的format格式输入在展开的代码中,最后一个参数如果 __VA_ARGS__ 被解析为空,会导致编译错误,加##解决
源代码
/**
* @brief 使用格式化方式将日志级别level的日志写入到logger
*/
#define SYLAR_LOG_FMT_LEVEL(logger, level, fmt, ...) \
if(logger->getLevel() <= level) \
sylar::LogEventWrap(sylar::LogEvent::ptr(new sylar::LogEvent(logger, level, \
__FILE__, __LINE__, 0, sylar::GetThreadId(),\
sylar::GetFiberId(), time(0), sylar::Thread::GetName()))).getEvent()->format(fmt, __VA_ARGS__)
/**
* @brief 使用格式化方式将日志级别debug的日志写入到logger
*/
#define SYLAR_LOG_FMT_DEBUG(logger, fmt, ...) SYLAR_LOG_FMT_LEVEL(logger, sylar::LogLevel::DEBUG, fmt, __VA_ARGS__)
...
...
修改后
/**
* @brief 使用格式化方式将日志级别level的日志写入到logger
*/
#define SYLAR_LOG_FMT_LEVEL(logger, level, fmt, ...) \
if(logger->getLevel() <= level) \
sylar::LogEventWrap(sylar::LogEvent::ptr(new sylar::LogEvent(logger, level, \
__FILE__, __LINE__, 0, sylar::GetThreadId(),\
sylar::GetFiberId(), time(0), sylar::Thread::GetName()))).getEvent()->format(fmt, ##__VA_ARGS__)
/**
* @brief 使用格式化方式将日志级别debug的日志写入到logger
*/
#define SYLAR_LOG_FMT_DEBUG(logger, fmt, ...) SYLAR_LOG_FMT_LEVEL(logger, sylar::LogLevel::DEBUG, fmt, ##__VA_ARGS__)
...
...