C语言简单日志记录系统-创新互联

在嵌入式系统软件开发过程中,经常会将系统信息以日志的形式记录在文件中,本文介绍一种简单的日志记录方法。

创新互联长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为福田企业提供专业的成都网站设计、成都网站建设,福田网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

1.日志头文件:

extern FILE *sys_log_file;


#define SYS_LOG_ERR(...) 			\
    do {					\
        if (sys_log_file != NULL) { 		\
            fprintf(sys_log_file, "sys: error " __VA_ARGS__); \
            fflush(sys_log_file); 	\
        } else 				\
        fprintf(stderr, "sys: error " __VA_ARGS__); \
    } while (0)

#define SYS_LOG_WARN(...) 			\
    do { 					\
        if (sys_log_file != NULL) { 		\
            fprintf(sys_log_file, "sys: warning " __VA_ARGS__); \
            fflush(sys_log_file); 	\
        } else 				\
        fprintf(stderr, "sys: warning " __VA_ARGS__); \
    } while (0)

#define SYS_LOG(...) 				\
    do { 					\
        if (sys_log_file != NULL) { 		\
            fprintf(sys_log_file, "sys: " __VA_ARGS__); \
            fflush(sys_log_file); 	\
        } 				\
    } while (0)

2.打开及调用

FILE *sys_log_file = NULL;


int main()
{
    sys_log_file = fopen("sys.log", "a");

    if (sys_log_file != NULL)
    {
        printf("file open OK!\n");
    }
    else
    {
        printf("file open failed!\n");
    }

    SYS_LOG_ERR("sys log error\n");

    SYS_LOG_WARN("sys log warning\n");

    SYS_LOG("sys log\n");

    fclose(sys_log_file);

    return 0;
}

3.总结:

1)该日志记录系统分为错误,警告,普通3种日志,采用宏的方式进行调用。对于错误,警告,若未指定文件,则会打印到标准输出设备上。

2)fprintf调用是线程安全的,原子操作的,多线程调用过程中不会出现乱码情况,但要注意其并不是进程安全的,在多进程调用过程中尤为注意。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:C语言简单日志记录系统-创新互联
当前URL:http://ybzwz.com/article/ceopgi.html