积累日志的好处 | 原创,AI翻译

Home 2025.07

积累日志的好处

在我之前作为一家银行的承包商时,我们使用了一个多云应用平台来为微服务提供服务。从那时起,我就开始在这家公司工作时积累日志。

几年过去了,我仍然认为这是帮助我工作或进行软件工程的最佳方法之一。随着时间的推移,我的日志目录中已经有数百个日志文件。

我没有为这些日志设置特定的子目录或正式的日志文件名。有时,我只是将JIRA任务名称或功能名称作为日志文件名的前缀。然后我再添加一个数字作为后缀。例如,它可能是 mutual-fund-1.log,mutual-fund-2.log 等。这意味着在互助基金微服务中,当运行该微服务时,我记录了该日志。

有时,当处理服务于多个区域的项目时,我会在文件名中添加国家代码作为后缀,例如 mutual-fund-cn-1.log,mutual-fund-sg-1.log。日志的文件名有点随意。因为那时,我需要专注于错误堆栈或周围的函数调用。

程序的日志很重要。每个人都知道。但是,我想强调积累日志的重要性,而不仅仅是在控制台中查看它们然后让它们消失。当项目进行时,您会发现更多的便利。您有更多的时间来查找以前的日志。您可能需要知道以前是否发生过类似的数据库存储过程调用。您可能需要知道以前是否发生过相同的错误。您可能需要回忆上次是如何解决这个问题的。

在一个大型项目或数十个微服务中,存在大量的细节。错误、异常或问题反复发生。日志就像程序的运行文档。它们是由程序自动生成,无需人工输入。对于开发人员来说,这些日志是可读的。因此,当开始一项新任务或修复一个新错误时,您手头有数百条日志来修复这个新错误。您并不孤单。

我们为什么要积累它们?因为事物或知识很容易被遗忘。

当纸张发明时,人类文明取得了进步。当计算机发明时,人类文明又达到了一个新的水平。在纸上做笔记就像在计算机中积累日志。

不仅仅对于人类,对于AI聊天机器人、大型语言模型工具来说,这些日志变得越来越重要。2022年成立的GreptimeDB,一个用于统一收集和分析可观测性数据(指标、日志和追踪)的数据库,并非巧合。

我以前为什么没有这样做?在我为大型银行担任承包商之后,我需要进行更多的协作并从事更大的项目。在此之前,在创业或我的创业初期,我大部分时间都是单打独斗。我以前在LeanCloud工作时,我大约有一半时间在做LeanChat这个即时通讯应用。

而当我进入更正式的企业界时,项目的开发与我的个人项目或创业项目不同。它们有SIT、UAT测试环境。并且生产环境通常只对某些小团队成员开放。从它们那里获取日志并解决问题变得漫长而有些乏味。运行一个项目需要时间,Jenkins流水线通常需要半小时才能运行。

所以我不能像苍蝇一样运行或测试程序。我不能通过简单地在我的个人电脑上输入命令并将代码上传到服务器来运行部署。

所以它或多或少地让我积累日志,以拥有更多的上下文来处理任务。我们最好一次性解决问题。我们最好在几次尝试中验证我们的修复。我们不那么容易获得在云端或公司服务器上运行的程序的日志,所以我们最好复制它们并保存到本地笔记本电脑上进行分析。

现在,对于我的个人项目,我也会积累日志。这已经成为一种习惯。在大公司工作几年后,我或多或少地有了更多的耐心或策略来让我的项目更大更持久。所以我知道随着时间的推移,我需要这些日志。

有人可能会说,你只需要拥有优雅的代码和可工作的项目。你不需要积累日志或错误堆栈跟踪。没关系。当我们有一个 bug 或一个新功能时,我们可以运行程序来获取当前的日志。我们不需要开发过程中的日志。它们就像科学实验的详细记录。乍一看,这似乎没问题。但从长远来看,如果有一天你想再次处理它,或者你想分享它,或者让其他人接管它,这可能就不太好了。

我认为这里可能存在很好的机会。在公司里,我们为什么不鼓励每个开发人员分享他们积累的日志呢?在开源项目中,我们也应该有。我们不觉得别人的日志有吸引力,因为我们不了解它们。保存这些日志时,我们会失去上下文。而且在其中,似乎有大量不相关或琐碎的消息。

但是积累日志的工作量其实微不足道。每次我们看到一些日志,特别是那些错误日志时,只需要复制粘贴。那么我们如何以自动化方式进行呢?每次我们运行一个项目时,比如那些Spring Boot项目,将日志记录在一个目录中是一个好主意。

世界变得越来越数字化,因此积累数字程序的日志就像在物理世界中积累书籍一样。


Back Donate