#ifndef LOG_H_
#define LOG_H_
#define MODULE 0
#define LOG_FATAL(fmt,...) lfs::common::Log::Out(MODULE, 0, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
#define LOG_ERROR(fmt,...) lfs::common::Log::Out(MODULE, 1, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
#define LOG_WARNING(fmt,...) lfs::common::Log::Out(MODULE, 2, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
#define LOG_DEBUG(fmt,...) lfs::common::Log::Out(MODULE, 3, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
#define LOG_INFO(fmt,...) lfs::common::Log::Out(MODULE, 4, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
namespace lfs{
namespace common{
class Log
{
public:
static void Out(const int moduleIndex, const int lvl, const char * fileName, const char * funcName, int line, const char * fmt, ...);
protected:
private:
};
}/* Namespace common */
}/* Namespace lfs */
#endif /* LOG_H */
#include "Log.h"
#include <stdarg.h>
#include <stdio.h>
#include <errno.h>
#include <time.h>
namespace lfs{
namespace common{
void Log::Out(const int moduleIndex, const int lvl, const char * fileName, const char * funcName, int line, const char * fmt, ...)
{
static const char * moduleName[]={
"LFS",
};
static const char * levelName[] = {
"FATAL",
"ERROR",
"WARNING",
"Debug",
"INFO"
};
time_t now;
char dbgtime[26] ;
time(&now);
ctime_r(&now, dbgtime);
dbgtime[24] = '\0';
// with time
// printf("[%s] [%s][%s][%s:%d]", moduleName[moduleIndex], levelName[lvl], dbgtime, fileName, line);
// no time - no funcName
// printf("[%s] [%s][%s:%d]", moduleName[moduleIndex], levelName[lvl], fileName, line);
// no time with funcName
printf("[%s] [%s][%s:%s:%d]", moduleName[moduleIndex], levelName[lvl], fileName, funcName, line);
va_list pArg;
va_start(pArg, fmt);
vprintf(fmt, pArg);
va_end(pArg);
printf("\n");
}
}/* Namespace common */
}/* Namespace lfs */
本文详细介绍了日志宏定义及其使用方法,包括不同级别的日志输出(FATAL、ERROR、WARNING、Debug、INFO),并展示了如何在特定模块中进行日志记录。
1626

被折叠的 条评论
为什么被折叠?



