如何使用log4c读取日志文件并将日志内容打印到终端
log4c日志文件读取展示终端解决方案
log4c本身仅提供日志写入能力,没有内置专门的日志文件读取API,你直接使用C语言标准库的文件操作接口即可实现需求,无需依赖log4c的额外接口,具体实现逻辑如下:
- 先确认log4c配置中指定的日志输出文件路径,确保运行读取程序的账号对该文件有可读权限
- 常规全量读取日志内容输出到终端的示例代码:
#include <stdio.h> #include <stdlib.h> // 替换为你实际的日志文件路径 #define LOG_PATH "/var/log/your_app.log" int main() { char line_buf[2048]; FILE* log_fd = fopen(LOG_PATH, "r"); if (!log_fd) { perror("日志文件打开失败"); return EXIT_FAILURE; } // 逐行读取输出到stdout while (fgets(line_buf, sizeof(line_buf), log_fd)) { fputs(line_buf, stdout); } fclose(log_fd); return EXIT_SUCCESS; }
- 若需要实现类似
tail -f的实时日志展示效果,可以增加轮询判断逻辑:- 每次读取完文件内容后用
ftell()记录当前文件偏移量 - 间隔指定时长(如1s)后比对当前文件大小与记录的偏移量
- 若文件有新增内容,调用
fseek()跳转到记录的偏移量位置,继续读取新增内容输出
- 每次读取完文件内容后用
- 如果你配置了log4c按大小/时间自动切割日志,需要额外按照切割规则匹配所有生成的日志分片,按需读取对应分片的内容即可
内容的提问来源于stack exchange,提问作者陈润泽
相关产品推荐
相关产品推荐

