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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值