C语言日志级别和作用,自己写的C语言通用日志框架,可以控制日志输出等级
/************************************c語言通用日志框架************************************ * * @author 南梔(kellygod) * * 定義顯示的日志級別 * #define LOG_LEVEL * 1. LOG_LEVEL_VERBOSE * 2. LOG_LEVEL_DEBUG * 3. LOG_LEVEL_INFO * 4. LOG_LEVEL_WARNING * 5. LOG_LEVEL_ERROR * 6. LOG_LEVEL_FATAL * 7. LOG_LEVEL_SILENT * function:(使用printf輸出格式帶換行符) * LOGV(format,...) * LOGD(format,...) * LOGI(format,...) * LOGW(format,...) * LOGE(format,...) * LOGF(format,...) * eg. LOGV("hellowrd"); * int a=1; * LOGE("a=%d",a); *****************************************************************************************/
#pragma once
#ifndef __LOG_PRINT_H_
#define __LOG_PRINT_H_
#include
#include
#include
#ifdef __cplusplus
extern "C"
{
#endif
/*控制日志輸出到控制臺或者文件,注釋此行日志輸出到控制臺*/
//#define DEBUG_FILE "log.dat"
/*改變此行控制日志輸出級別*/
#define LOG_LEVEL LOG_LEVEL_VERBOSE
#define LOG_LEVEL_VERBOSE 1 /*所有*/
#define LOG_LEVEL_DEBUG 2 /*調試*/
#define LOG_LEVEL_INFO 3 /*信息*/
#define LOG_LEVEL_WARNING 4 /*警告*/
#define LOG_LEVEL_ERROR 5 /*錯誤*/
#define LOG_LEVEL_FATAL 6 /*致命錯誤*/
#define LOG_LEVEL_SILENT 7 /*靜默*/
#define TITLE_VERBOSE " V:"
#define TITLE_DEBUG " D:"
#define TITLE_INFO " I:"
#define TITLE_WARNING " W:"
#define TITLE_ERROR " E:"
#define TITLE_FATAL " F:"
#ifndef LOG_LEVEL
# define LOG_LEVEL LOG_LEVEL_VERBOSE
#endif
#define LOG_NOOP (void) 0
#ifndef _FILE_POINTER_
#define _FILE_POINTER_
static FILE *fp_log;
#endif
#ifndef _TIME_POINTER_
#define _TIME_POINTER_
static time_t timep;
static struct tm *p;
#endif
#ifdef DEBUG_FILE
# define LOG_PRINT(level,fmt,...) \
fp_log=fopen(DEBUG_FILE,"a"); \
time(&timep); \
p =localtime(&timep); \
fprintf(fp_log,\
"%d-%d %d:%d:%d In %s Line:%u " level fmt "\n",\
1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec,\
__FILE__,__LINE__,##__VA_ARGS__); \
fclose(fp_log); \
fp_log=NULL
#else
# define LOG_PRINT(level,fmt,...) \
time(&timep); \
p =localtime(&timep); \
fprintf(stdout,\
"%d-%d %d:%d:%d In %s Line:%u " level fmt "\n",\
1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec,\
__FILE__,__LINE__,##__VA_ARGS__)
#endif
#if LOG_LEVEL_VERBOSE >= LOG_LEVEL
# define LOG_VERBOSE(fmt,...) LOG_PRINT(TITLE_VERBOSE,fmt,##__VA_ARGS__)
#else
# define LOG_VERBOSE(...) LOG_NOOP
#endif
#define LOGV(format,...) LOG_VERBOSE(format,##__VA_ARGS__)
#if LOG_LEVEL_DEBUG >= LOG_LEVEL
# define LOG_DEBUG(fmt,...) LOG_PRINT(TITLE_DEBUG,fmt,##__VA_ARGS__)
#else
# define LOG_DEBUG(...) LOG_NOOP
#endif
#define LOGD(format,...) LOG_DEBUG(format,##__VA_ARGS__)
#if LOG_LEVEL_INFO>= LOG_LEVEL
# define LOG_INFO(fmt,...) LOG_PRINT(TITLE_INFO,fmt,##__VA_ARGS__)
#else
# define LOG_INFO(...) LOG_NOOP
#endif
#define LOGI(format,...) LOG_INFO(format,##__VA_ARGS__)
#if LOG_LEVEL_WARNING >= LOG_LEVEL
# define LOG_WARN(fmt,...) LOG_PRINT(TITLE_WARNING,fmt,##__VA_ARGS__)
#else
# define LOG_WARN(...) LOG_NOOP
#endif
#define LOGW(format,...) LOG_WARN(format,##__VA_ARGS__)
#if LOG_LEVEL_ERROR >= LOG_LEVEL
# define LOG_ERROR(fmt,...) LOG_PRINT(TITLE_ERROR,fmt,##__VA_ARGS__)
#else
# define LOG_ERROR(...) LOG_NOOP
#endif
#define LOGE(format,...) LOG_ERROR(format,##__VA_ARGS__)
#if LOG_LEVEL_FATAL >= LOG_LEVEL
# define LOG_FATAL(fmt,...) LOG_PRINT(TITLE_FATAL,fmt,##__VA_ARGS__)
#else
# define LOG_FATAL(...) LOG_NOOP
#endif
#define LOGF(format,...) LOG_FATAL(format,##__VA_ARGS__)
#ifdef __cplusplus
}
#endif
#endif
總結
以上是生活随笔為你收集整理的C语言日志级别和作用,自己写的C语言通用日志框架,可以控制日志输出等级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言顺序结构程序设计第4章答案,第4章
- 下一篇: 差分法c语言源程序,差分法求数据压缩