摘要:log.c 是一个极为简约的 C 语言日志库,由 akstuki 开发维护。该项目旨在提供一个轻量级、易于集成的解决方案,让开发者能够迅速地在他们的 C 应用程序中添加日志记录功能。
log.c 是一个极为简约的 C 语言日志库,由 akstuki 开发维护。该项目旨在提供一个轻量级、易于集成的解决方案,让开发者能够迅速地在他们的 C 应用程序中添加日志记录功能。
尽管其体积小巧,仅由一个 .c 文件和一个 .h 文件组成,总计不超过 200 行代码,但 log.c 依然具备足够的灵活性来满足基础的日志需求,包括不同的日志级别、输出到文件的能力,以及线程安全性。
log.c 作为一个独立组件,适用于众多 C 语言项目,特别是在嵌入式系统和小型服务应用中。虽然没有直接的“生态项目”列表,但由于其通用性,它可与任何需要日志记录功能的 C 项目结合使用。
例如,它可以被集成到物联网设备固件、服务器后台管理工具或是任何形式的客户端-服务器架构的应用中。
用户可以根据自己的具体应用场景定制化扩展,比如通过简单的修改或增加适配器(Appenders)实现日志远程发送至日志收集服务。
通过以上介绍和指导,你应该已经掌握了如何快速地将 log.c 引入到你的 C 项目中,并有效地利用它来进行日志管理。记得在实际应用中根据具体需求进行适当的配置和优化。
由于 log.c 是纯 C 代码构成,集成到项目中通常不需要复杂的步骤。直接下载或通过 git 克隆仓库即可开始使用:
成员功能void *udata自定义锁回调函数的私有信息log_LockFn lock自定义的锁回调函数,用于互斥访问文件,不同平台锁机制不同FILE *fp存储log信息的文件句柄int level显示和保存的log信息等级,低于level的不显示也不保存在生产环境中设置较高级别的日志(如 ERROR 或WARNING),而在开发和测试期间则开启更详细的日志(DEBUG 或 TRACE)。函数名功能说明log_set_fp设置存储log信息的文件句柄log_set_lock设置自定义的锁回调函数
函数原型**typedef void (log_LockFn)(void udata, int lock);
在你的 C 项目中包含 log.h 头文件,并链接 log.c 到你的构建过程中。
本例创建一个主程序文件main.c
peng@ubuntu:~/work/log/src$ lsclog.cpp clog.h log.c log.h main.c如果是c++环境,用clog.cpp文件
/* * main.c * Copyright 2024 -yikoupeng * This program is under a GPLv3+ license. * log demo **/#include #include#include "log.h" #define LOG_FILE_NAME "peng.log" pthread_mutex_t log_mutex; void log_mutex_fn(void *udata, int lock) { if(lock==1) { //lock pthread_mutex_lock(&log_mutex); }else if(lock==0){ //unlock pthread_mutex_unlock(&log_mutex); } return; } void my_log_lock_init(char *info) { pthread_mutex_init(&log_mutex,NULL); log_set_lock(&log_mutex_fn); log_set_udata(info); } void my_fp_init(char *filename) { FILE * fp = fopen(filename,"w+"); if(fp == NULL) { printf("%s open fail\n",filename); } log_set_fp(fp); } int main(int argc, char **argv) { //设置锁回调函数 my_log_lock_init("peng"); //设置log文件句柄 my_fp_init(LOG_FILE_NAME); //log信息打印到屏幕 log_set_quiet(0); //设置日志级别为LOG_TRACE printf("设置日志级别为LOG_TRACE.\n"); log_set_level(LOG_TRACE); // 进行一些操作... log_trace("一口Linux."); log_debug("一口Linux."); log_info("一口Linux."); log_warn("一口Linux."); log_error("一口Linux."); log_fatal("一口Linux."); //设置日志级别为LOG_ERROR printf("设置日志级别为LOG_ERROR.\n"); log_set_level(LOG_ERROR); // 进行一些操作... log_trace("一口Linux."); log_debug("一口Linux."); log_info("一口Linux."); log_warn("一口Linux."); log_error("一口Linux."); log_fatal("一口Linux."); return 0; }
2、编译确保在编译时一起编译 log.c 文件,或者如果是在 Makefile 中,则确保它被正确链接。
peng@ubuntu:~/work/log/src$ gcc main.c log.c -o run3、运行4、查看log文件信息
】
来源:一口Linux