完全编程哲学 | 原创,AI翻译

Home 2025.01

目录

  1. 编程
    • 作为创造性活动的编程
    • 个人项目开发
    • 技术趋势与兴趣驱动学习
    • 调试与问题解决哲学
    • 以用户为中心的开发
    • 代码质量与简洁性
    • AI集成与自动化
  2. 成为无界工程师
    • 在企业限制下工作
    • 最大化内部资源利用
    • AI时代的工具构建
    • 思维模式转变
    • 突破认知局限
  3. 积累日志的价值
    • 企业环境中的日志管理
    • 历史背景与问题解决
    • 日志文件组织策略
    • 长期项目维护
    • 知识留存与共享
    • 自动化日志收集方法

编程


成为无界工程师


积累日志的价值

早年我在银行担任合同工时,使用多云应用平台支撑微服务,那时起开始积累工作日志。

多年过去,我仍认为这是助力工作和软件开发的最佳方式之一。随着时间推移,日志目录已有数百个日志文件。

我没有专门的子目录或规范命名。有时直接用JIRA任务名或功能名作前缀加数字后缀,如mutual-fund-1.log,表示互助基金微服务运行时产生的日志。

多地区项目会添加国家后缀,如mutual-fund-cn-1.log。日志文件名较随意,因当时需聚焦错误堆栈和函数调用链。

程序日志的重要性人尽皆知,但我想强调积累日志而非仅在控制台查看就让其消失的价值。项目进行中积累日志能带来诸多便利:追溯历史日志、判断存储过程调用是否重复发生、确认错误是否再现、回忆以往解决方案等。

大型项目或数十个微服务中存在海量细节,错误异常反复出现。日志如同程序的运行文档,由程序自动生成无需人工录入,对开发者可读。开始新任务或修复新bug时,手握数百条历史日志就不会孤立无援。

为何积累日志?因为知识与细节易被遗忘。

纸张发明推动人类文明进步,计算机诞生又将文明推向新高度。在计算机中积累日志,如同在纸上记录笔记。

不仅对人类,对AI聊天机器人、LLM工具而言,这些日志也日益重要。2022年成立的GreptimeDB——专注于可观测性数据(指标、日志、追踪)统一收集分析的数据库应运而生并非偶然。

为何之前没这样做?在为大银行工作前,我主要在初创公司或自己创业时单打独斗。后来进入更正规的企业环境,项目开发与个人/创业项目截然不同:存在SIT、UAT测试环境,生产环境通常只对小团队开放。获取日志和修复问题变得漫长繁琐,Jenkins流水线常需半小时运行。

无法像苍蝇般快速测试部署,只能通过积累日志获取更多上下文。最好一次性解决问题,用最少次数验证修复。由于难以及时获取云端/公司服务器日志,将其复制到本地笔记本分析更高效。

如今个人项目我也会积累日志,这已成习惯。在大公司工作数年后,我更有耐心和策略将项目做大做久,因此明白随时间推移需要这些日志。

或许有人认为只要有优雅代码和可运行项目即可,无需积累日志或错误堆栈。初见合理,但长期看,若未来重启项目、分享或移交他人,缺乏日志记录可能不利。

企业为何不鼓励开发者共享积累的日志?开源项目也应如此。我们觉得他人日志无趣是因缺乏上下文,且其中看似充满无关琐碎信息。

但积累日志的代价极小——每次看到日志(特别是错误日志)时复制粘贴即可。何不自动化?像Spring Boot项目那样每次运行时自动记录日志到目录是个好主意。

世界日益数字化,积累程序日志如同物理世界收藏书籍。


Back Donate