杂谈:先做个垃圾出来

PointY Lv2

写个日志库

两个星期前,我想写一个纯 C++ 的日志库练练手,于是找了几个主流库来学习,也借助 AI 反复探讨了项目框架…试着学习他们的优秀之处。

  • spdlog
  • plog
  • log4Qt

学习优秀的日志库

plog

  • Header-only,直接 #include 就能用,不需要编译链接。
  • 核心代码仅千行左右,麻雀虽小五脏俱全。非常适合拿来读源码学习。
  • 支持自定义 Formatter 和 Appender(输出目标),扩展方便。
  • 跨平台支持丰富:Windows Linux MacOS FreeRTOS Android Arduino。
  • 支持多实例,可以为不同模块配置独立的日志通道。

适合场景:小型项目、嵌入式设备,或者像我一样的日志库学习者。

spdlog

  • 性能极高,号称是目前最快的 C++ 日志库之一,异步模式基于一个后台线程池 + 阻塞队列。
  • 同时提供 Header-only 和编译版两种使用方式。
  • 内置格式化基于 fmt 库(C++20 std::format 即源于此),语法简洁。
  • Sink(输出目标)体系完善:控制台、文件、按大小/按天滚动、syslog、Windows Event Log 等应有尽有。

适合场景:追求性能的生产环境,或者对日志功能要求比较全面的项目。

log4Qt

  • 移植自 Java 的 log4j,API 风格和配置理念一脉相承。
  • 深度集成 Qt,天然支持 QString、信号槽、qDebug() 转发。
  • 支持通过 .properties 配置文件初始化,不改代码就能调整日志级别、输出目标、格式。
  • 支持 Logger 层级继承,父子 Logger 之间的配置可以复用。

适合场景:基于 Qt 的项目,或者需要”运维改配置而不改代码”来调整日志行为的场景。

三个库各有各的好,我对着源码和文档反复查看。

可回过头一想,研究了这么多,我到底学到了多少,项目进度又推进了多少呢?

我突然意识到这样的投入产出比很低。越是准备,越是有更多要准备的东西,最后心气都磨没了!

先做个垃圾出来

今天偶然刷到一个视频 比别人更快学会任何东西的顶级思维:先做个垃圾出来

她分享的观点是:

学东西慢是因为我们一开始就想做到完美,害怕做出来的东西丢脸,害怕准备不足,害怕不够完善。我们被完美主义困住了。

而实际上,我们需要的只是先做,先做出来。哪怕它很垃圾。

flowchart TD
A[行动(哪怕很垃圾)] --> B[发现问题]
B --> C[解决问题]
C --下一个循环--> A

避开大而全的学习,先做出来可以让我们尽快进入反馈循环中。

掌握最基础的内容就行动,遇到问题就带着问题去找解决方法。

这个循环转得越快,我们才学得越快。与君共勉! :)

  • 标题: 杂谈:先做个垃圾出来
  • 作者: PointY
  • 创建于 : 2026-07-12 17:39:52
  • 更新于 : 2026-07-14 14:52:14
  • 链接: https://siyuhong.github.io/2026/07/12/chat-make_a_garbage_first/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论