C语言 log等级_实现

#include <stdarg.h>
#include "main.h"
typedef enum
{
	LogLevel_begin = -1,

	LogLevel_Trace,
	LogLevel_Debug,
	LogLevel_Info,
	LogLevel_Error,
	LogLevel_Fatal,

      LogLevel_end

} LogLevel_em;

#define PER_LOG_LINE_SIZE 512

static LogLevel_em	  w_emCurLogLevel = LogLevel_Debug ;       //log level switch

static void Send_logMsg(char* w_Msg, uint32_t u32MsgLen);
static void Logger_putMsg(LogLevel_em emLvl, const char*  pcszBodyFmt, va_list vaBodyArgs);

void Logger_trace( const char * w_Fmt, ...)
{
	va_list vaList;

	va_start(vaList, w_Fmt);
	Logger_putMsg(LogLevel_Trace, w_Fmt, vaList);
	va_end(vaList);
}

void Logger_debug(const char * w_Fmt, ...)
{
	va_list vaList;

	va_start(vaList, w_Fmt);
	Logger_putMsg(LogLevel_Debug, w_Fmt, vaList);
	va_end(vaList);
}

void Logger_info( const char * w_Fmt, ...)
{
	va_list vaList;

	va_start(vaList, w_Fmt);
	Logger_putMsg(LogLevel_Info, w_Fmt, vaList);
	va_end(vaList);
}

void Logger_error(  const char * w_Fmt, ...)
{
	va_list vaList;

	va_start(vaList, w_Fmt);
	Logger_putMsg(LogLevel_Error, w_Fmt, vaList);
	va_end(vaList);
}

void Logger_fatal( const char * w_Fmt, ...)
{
	va_list vaList;

	va_start(vaList, w_Fmt);
	Logger_putMsg(LogLevel_Fatal, w_Fmt, vaList);
	va_end(vaList);
}

static void Logger_putMsg(LogLevel_em emLvl, const char*  pcszBodyFmt, va_list vaBodyArgs){
    if (w_emCurLogLevel <= emLvl)
    {
            static char s_strMsg[PER_LOG_LINE_SIZE];
            uint32_t u32Len;
            u32Len = vsnprintf(s_strMsg, PER_LOG_LINE_SIZE, pcszBodyFmt, vaBodyArgs)-1;
            #if 0
            s_strMsg[u32Len++]='\n';
            s_strMsg[u32Len]='\0';
            #endif
            Send_logMsg(s_strMsg,u32Len);
    }
}

static void Send_logMsg(char* w_Msg, uint32_t u32MsgLen){
    #if 1
    printf_log(w_Msg,u32MsgLen);   //需要自己现实
    #endif
}

时间: 2024-11-02 22:00:57

C语言 log等级_实现的相关文章

第一个CGI程序-----完全就是普通的c语言嘛‘(*∩_∩*)′

第一个CGI程序 ----完全就是普通的C语言嘛 '(*∩_∩*)′ PainterQ 2017年5月14日 上一篇博文里面叙述了Apache的安装和配置方法,恍恍惚惚我就拥有了自己的第一个http服务器.虽然是局域网下的网站但给同学们开开车还是完全够了(咳咳).好像是有了Apache再把HTTP文档丢到htdocs文件夹就可以了,老司机的工作竟然如此轻松.其实还有很多的姿势都还没有掌握哦,不追求新姿势的人生和咸鱼有什么分别!就是老司机也要做姿势最多的那一个.这一篇我们一起来了解一下什么是动态网

网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型

C语言程序设计进阶_第一周:数据类型:整数类型.浮点类型.枚举类型 1.0数据类型 1.1整数类型 1.2浮点类型 1.3逻辑类型 1.4类型转换和条件运算 1.0数据类型 1 整数 char(%c), short, int(%d), long(%ld), long long(C99) 2 浮点数 float(%f), double(%lf), long double(C99) 3 逻辑 bool(C99) 4 指针 5 自定义类型 所表达的数的范围:char<short<int<flo

【转】c语言位域操作—_结构体内冒号:的使用

原文链接:http://blog.chinaunix.net/uid-22145625-id-1789513.html 这是C语言位域问题 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”.所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数.每个域有一个域名,允许在程序中按域名进行操作.这样就可以

C语言 &#183; LOG大侠

标题:LOG大侠 atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称Log大侠. 一天,Log大侠的好友 drd 有一些整数序列需要变换,Log大侠正好施展法力... 变换的规则是: 对其某个子序列的每个整数变为: [log_2 (x) + 1] 其中 [] 表示向下取整,就是对每个数字求以2为底的对数,然后取下整. 例如对序列 3 4 2 操作一次后,这个序列会变成 2 3 2. drd需要知道,每次这样操作后,序列的和是多少. [输入格式]第一行两个正整数 n m .第二行

go语言log包的学习(log,Logger)

package main; import ( "log" "os" "time" "fmt" ) func main() { //创建输出日志文件 logFile, err := os.Create("./" + time.Now().Format("20060102") + ".txt"); if err != nil { fmt.Println(err); } /

《Java语言基础》_第一章_java开发的前奏

Java语言的跨平台性 1.跨平台性(一个操作系统下开发的应用,放到另一个操作系统下依然可以运行). 2.Java语言通过Java虚拟机可以实现跨平台性,windows有windows的java虚拟机,linux有linux的java虚拟机. 3.Java语言的编译过程.

C语言Log记录调试

参考博客天堂大鸟的程序,并调试成功,可以记录程序调试过程.代码记录如下: #include<stdarg.h> #include<stdio.h> #define COMMLIB_DBG_FILE "./MyLog.log" void mydbgprintf(const char *str, ...) { va_list ap; FILE *fh = NULL; #ifdef __STDC_WANT_SECURE_LIB__ if(fopen_s(&fh

《Pyhton语言程序设计》_第7章_对象和类

#7.2.1_定义类 一个类的功能:数据域.定义方法.初始化程序 初始化程序总是被命名为:_ _init_ _ (两个连续的下划线) #7.2.4_self参数 #self参数是指向对象本身的参数,那么它的作用域就是整个类,self.x可以直接访问实例变量x,self.ml()表示调用类的对象self的示例方法ml. #7.2.5_举例:使用类 原文地址:https://www.cnblogs.com/qiyuanjiejie/p/9736766.html

Python语言及其运用_第六章_对象和类

[主要内容]主要总结书中关于类和对象的简单程序,用于说明类的基本使用方法 注意:6.类中变量的私有保护    9.魔术方法 [基本知识] 1.类的基本定义 1 class Person(): 2 def __init__(self,name): #初始化方法,注意类中方法的第一个参数为表示自身的self 3 self.name = name 4 hunter = Person("Elmer Fudd") 5 print(hunter.name) 2.继承 1 class Car():