在嵌入式系统软件开发过程中,经常会将系统信息以日志的形式记录在文件中,本文介绍一种简单的日志记录方法。
创新互联长期为上千客户提供的网站建设服务,团队从业经验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元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款