Linux下日志方案对比
一、使用printf函数这是最基础的日志输出方式使用printf、cout、cerr等函数无需额外安装适用于嵌入式裸机或快速调试场景。假设我们的程序叫server要生成日志文件XXX.log则可以执行./server XXX.log 21 然后通过命令​tail -f XXX.log或tail -f XXX.log -n 200可以实时查看日志文件内容。缺点‌1.类型不安全‌格式符如 %d、%s与参数类型需手动匹配错误可能导致崩溃或乱码。‌2.无日志级别‌无法区分 INFO/WARN/ERROR需通过宏或条件编译手动控制。‌3.线程不安全‌多线程并发调用时输出会交错需自行加锁。‌4.功能单一‌仅支持格式化输出缺乏时间戳、文件名、滚动文件等生产需求。二、使用systemctlsystemctl 是 Linux 系统管理服务的核心命令‌用来启动、停止、重启服务以及设置开机自启是 systemd 系统的主要管理工具。可以通过journalctl 工具来查看systemd服务的日志具体可以参考《Linux下使用systemctl启动服务失败》三、使用日志库比如使用spdlog库。相比 printfspdlog 的优势主要不是“能打印文字”而是提供完整的日志体系。能力printfspdlog日志级别需要自行实现trace/debug/info/warn/error/critical运行时过滤不支持可动态调整级别多线程多次打印可能交错多线程 logger 保证单条日志完整时间、线程信息手动拼接自动格式化文件和控制台手动处理支持多个 sink日志轮转需要 logrotate或自研支持按大小、日期轮转异步写入需要自研队列内置异步模式格式安全%d/%s 写错可能出问题基于 fmt 的类型安全格式化flush 策略手动 fflush可按级别或周期 flush模块管理需要自行约定可为 Routing、Conmon 等创建独立 logger例如printf(device%s error%d\n, name.c_str(), errorCode);可以改为spdlog::error(device{} error{}, name, errorCode);spdlog库的主要优势包括1.控制日志量生产环境使用INFO排查关键问题时临时开启DEBUG无需删除或注释大量打印代码。2.多线程日志更清楚多个 printf 可能互相穿插spdlog 可以把一条日志完整输出。3.统一格式比如2026-08-04 10:15:32.123 ERROR [routing] [thread 1832] devicespeaker1 code-805时间、级别、模块和线程 ID 不再由每个函数自行拼接。4.减少业务线程阻塞高频日志可以使用异步 logger让后台线程负责输出。不过错误和崩溃前日志需要合理设置 flush 和队列溢出策略。更容易管理敏感信息。四、日志使用技巧1.日志可以设置为按200MB、14个历史文件轮转压缩仅root可读防止日志无限增长占满磁盘。每个日志文件每天检查一次日志达到约200MB时进行轮转当前日志改名保存并创建新的日志文件继续记录最多保留14份历史日志。较旧的历史日志压缩为.gz文件。超过14份后最旧的一份会被自动删除。2.一个服务器可以同时生成多份日志。比如假设业务服务器名称为localserver负责和流媒体服务器ZLMediaKit通讯以及接收java端的控制指令启动推流控制设备等。则localserver可以同时生成三份日志/var/log/localserver/longrun-debug.log/var/log/localserver/zlmediakit-longrun.log/var/log/localserver/health.log三份日志分别对应不同层次。其中/var/log/localserver/longrun-debug.log为localserver的应用日志记录指令收发和publish/FFmpeg推流过程。/var/log/localserver/zlmediakit-longrun.log为ZLMediaKit媒体服务日志记录流注册/注销、RTSP 推流、WebRTC/HLS 播放、播放器连接、DTLS 握手和媒体会话断开等用于判断“流已经推送成功但网页播放失败”的媒体服务或播放端问题。/var/log/localserver/health.log为每分钟一次的系统健康快照记录localserver和ZLMediaKit的进程状态、CPU、内存、线程数、文件描述符、连接数及重启次数。用于判断长时间运行后是否出现资源泄漏、连接堆积或进程重启。这样当发生推流失败等问题时我们可以按照顺序进行排查在longrun-debug.log确认localserver是否成功建立并持续推流在zlmediakit-longrun.log确认流是否注册以及网页播放器是否成功连接在health.log检查故障发生前后是否存在资源异常或服务重启。3.如果是为了排查长时间运行崩溃的问题则可以加入core dump、退出码记录和自动拉起脚本再重启复现以获取准确崩溃栈后修复。此时推荐使用追加方式写日志... /root/Test/gst-test/player.log 21这样做的优点是不会清空旧日志。可以保留之前崩溃前后的现场。

相关新闻

动态规划进阶:方格取数问题中按列DP与两次扫描的解法详解

动态规划进阶:方格取数问题中按列DP与两次扫描的解法详解

1. 项目概述与问题拆解 今天我们来啃一块信奥(信息学奥林匹克)动态规划里的硬骨头——方格取数问题。具体来说,是题目 B4140 [信息与未来 2016] 方格取数。很多刚接触动态规划的同学,一看到“方格”、“路径”、“最大值”这些词&…

2026/8/12 18:29:30 阅读更多 →
大模型微调避坑指南:LoRA实战中的四大工程陷阱与解决方案

大模型微调避坑指南:LoRA实战中的四大工程陷阱与解决方案

1. 项目概述:当微调成为“负优化”的起点最近在社区里,看到不少朋友在尝试微调自己的大语言模型(LLM)或扩散模型时,都遇到了一个令人沮丧的“怪圈”:模型在微调前还能正常对话、生成,经过一番精…

2026/8/12 18:29:30 阅读更多 →
MySQL int(11)与Java数据类型:存储原理、映射实践与性能优化

MySQL int(11)与Java数据类型:存储原理、映射实践与性能优化

1. 项目概述:从“11”引发的类型思考 最近在带新人,发现一个挺有意思的现象:很多刚接触数据库和编程的朋友,对 int(11) 里的这个“11”到底代表什么,以及为什么Java里一个 int 占4个字节而一个 long 占8个字节&a…

2026/8/12 18:29:30 阅读更多 →

最新新闻

agent-sandbox核心组件详解:从CRD到控制器工作原理

agent-sandbox核心组件详解:从CRD到控制器工作原理

agent-sandbox核心组件详解:从CRD到控制器工作原理 【免费下载链接】agent-sandbox agent-sandbox enables easy management of isolated, stateful, singleton workloads, ideal for use cases like AI agent runtimes. 项目地址: https://gitcode.com/gh_mirror…

2026/8/12 21:33:19 阅读更多 →
Ketch核心组件解析:深入理解应用部署的幕后英雄

Ketch核心组件解析:深入理解应用部署的幕后英雄

Ketch核心组件解析:深入理解应用部署的幕后英雄 【免费下载链接】ketch Ketch is an application delivery framework that facilitates the deployment and management of applications on Kubernetes using a simple command line interface 项目地址: https://…

2026/8/12 21:33:19 阅读更多 →
LightCompress与VLLM集成教程:打造高效低延迟LLM推理系统

LightCompress与VLLM集成教程:打造高效低延迟LLM推理系统

LightCompress与VLLM集成教程:打造高效低延迟LLM推理系统 【免费下载链接】LightCompress [EMNLP 2024 & AAAI 2026] A powerful toolkit for compressing large models including LLMs, VLMs, and video generative models. 项目地址: https://gitcode.com/g…

2026/8/12 21:33:19 阅读更多 →
GenericAgent多平台支持:在不同操作系统上的部署与使用

GenericAgent多平台支持:在不同操作系统上的部署与使用

GenericAgent多平台支持:在不同操作系统上的部署与使用 【免费下载链接】GenericAgent Self-evolving agent: grows skill tree from 3.3K-line seed, achieving full system control with 6x less token consumption 项目地址: https://gitcode.com/GitHub_Trend…

2026/8/12 21:33:19 阅读更多 →
agent-sandbox完全指南:如何轻松管理隔离的AI代理运行时工作负载

agent-sandbox完全指南:如何轻松管理隔离的AI代理运行时工作负载

agent-sandbox完全指南:如何轻松管理隔离的AI代理运行时工作负载 【免费下载链接】agent-sandbox agent-sandbox enables easy management of isolated, stateful, singleton workloads, ideal for use cases like AI agent runtimes. 项目地址: https://gitcode.…

2026/8/12 21:33:19 阅读更多 →
Notepad--:国产跨平台文本编辑器的5个必知功能

Notepad--:国产跨平台文本编辑器的5个必知功能

Notepad--:国产跨平台文本编辑器的5个必知功能 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- 你是一个文章…

2026/8/12 21:32:19 阅读更多 →

日新闻

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

1. 为什么需要一个“目录树”工具?在Linux世界里,尤其是Ubuntu这样的发行版,命令行是很多人的主战场。我们每天都要和文件、目录打交道。ls命令是查看目录内容的首选,它简洁、高效,能列出文件名、权限、大小等关键信息…

2026/8/12 9:33:34 阅读更多 →
博思AI智能体:意图识别、思考链与性能优化的工程实践

博思AI智能体:意图识别、思考链与性能优化的工程实践

在AI应用从“能用”走向“好用”的进程中,系统的响应速度、决策透明度与高并发稳定性是决定用户体验的关键。博思AI智能体近期完成了一次重要的专项优化,聚焦于意图识别、思考链展示与全链路压测三大核心领域,将系统从功能实现推向了工程卓越…

2026/8/12 9:33:34 阅读更多 →
子代理架构:AI智能体任务分解与协同执行的核心原理与实践

子代理架构:AI智能体任务分解与协同执行的核心原理与实践

1. 项目概述:为什么我们需要“子代理”?最近在折腾各种AI应用和自动化流程时,我越来越频繁地遇到一个瓶颈:单个AI智能体(Agent)的能力边界。无论是处理复杂的多步骤任务,还是需要同时调用多个专…

2026/8/12 9:33:34 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →