您的位置:首页 > 其它

一个成熟的开发团队或开发者必备的工具系列之 Log 库

2015-07-14 14:00 411 查看

前言

如题,这篇博客要讨论是关于 Log 库的一些东西,但为什么要叫《一个成熟的开发团队或开发者必备的工具系列之 Log 库》呢?因为我打算围绕一个成熟的开发团队或开发者必备的工具这个主题,去介绍一系列的工具。这些工具可能是一些开发库,也可能是某种轻量级标记语言,或者是某种文本编辑器,甚至是一个简单的插件。虽然作为一名程序员,我目前并没有太多的项目经历,但我还是想把之前的工作经历中的一些想法写出来,和大家分享一下。那为什么称这些工具是一个成熟的开发团队或开发者必备的呢?这一点更多的是取决于个人的一些项目经历和思考。我觉得不同的项目,在开发过程中面临的一些问题,需要的一些工具其实都是一样的,如果能给这些共同的问题提供一个完善的,灵活的解决方案,将这些工具的东西也总结出来,那这对开发团队或者开发者以后的项目开发是大有帮助的。因为开发者或者开发团队不需要每次再为同一个事情去花费时间,这在一定程度上其实是自动化了项目的开发过程。

另外,在介绍每一个工具的具体内容上,我更多的是结合项目经历和实际的需求去说为什么需要这个东西,这个东西能给开发团队或者开发者带来什么帮助,而不是具体介绍这个工具的使用之类的,毕竟这些资料还是非常容易找到的,不过我也会列出一些我找到的不错的资料。

OK,下面就正式开始这个系列的第一篇博客的内容了。

为什么需要 Log 库?

做为一个开发者,无论你使用什么语言,基于什么平台,相信大家在开发过程中,都会在程序中打印一些 log,来帮助调试或确认一些情况和问题。可以说打印 log,是程序员在每个程序中都会做的事,是程序员做的最频繁的事之一。而且 log 确实也是程序员的最大帮手之一。

在我们刚开始学习编程,或者做一些小项目时,我们对打印 log 通常并没有什么特别的需要,基本上在这个阶段,我们所谓的打印 log,基本上只是将字符串输出到控制台或者文件。比如下面这样:

sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1)
{
    printf("socket failed\n");
    break;
}


但是随着我们做的项目越来越大,项目中的源代码越来越多,项目中包含的模块越来越多,项目自身的复杂度越来越大,你就会觉得,简单的将 一个字符串输出到控制台或者文件已经不能满足我们的需求。

举个例子,随着项目的增大,你会发现项目输出的 log 越来越多,那这样造成的问题就是,当你看到一条 log 时,很可能会需要花费很长一段时间才能搞清楚这条 log 对应的是是源代码中的哪个位置,特别是项目包含多个模块,而且不同模块由不同人开发,而且每个模块都将 log 输出到控制台或者文件时。所以这时,你可能会想在打印 log 时,除了打印自己指定的信息外,也把打印这条 log 的语句所在的文件名和行号也打印出来。

在举个例子,背景依然是项目中 log 很多,而且所有的 log 都集中在一个文件或者控制台,现在我们要基于这些 log 去定位项目中出现的一些问题,那我们可能很想忽视一些 log,因为 log 太多了,而且所有 log 都集中在一起,但其实一些 log 只是用来表示一些一般信息,这些 log 并不表示程序出现了问题。那在这种情况下,我们就会想到能不能对 log 进行分级,比如某种等级的 log 用于显示一些一般信息,另外一种等级的 log 用来表示程序中出现了严重的错误。这样,我们就可以基于这种分级只查看我们想要的 log。

可以说上面这两个例子只是随着项目的增大,开发团队或者开发者对打印 log 的一般需求,在实际的项目开发中,开发团队或者开发者还会有其他一些需求。这些需求就是为什么 我们需要一个 Log 模块,为什么 Log 模块是一个成熟的开发团队或者开发者必备的工具之一的原因。

选择一个开源的 Log 库

为什么选择一个开源的 Log 库?首要原因是因为开发团队或者开发者对于 Log 模块的大多数需求在一定程度上都是一致的,而开源 Log 是可以满足这些需求的,可以说这些需求的一致性导致了开源 Log 库的出现;另一方面选择一个开源 Log 库是相较于开发自己的 Log 库更为省时省力的一种做法,因为并不是每一个开发团队或者开发者都有精力和时间去开发一个自己的 Log 库的,而且我们也可以基于开源 Log 库定制我们自己的 Log 库。

目前,成熟的开源 Log 还是很多的,比如用于 C++ 开发的 log4cpp 和 Goolge 的 glog,用于 Java 开发的 log4j。大家可以根据自己的情况进行选择。个人觉得选择哪个并不重要,重要的是用好自己选择的那个,并且能够对其进行定制。

一些资料

How To Use Google Logging Library (glog)

这个是 Google glog 官方的使用文档

深入理解log机制

关于 Log 库的更深入的一篇文章,写的非常好,感谢作者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: