介绍

几乎每个大型应用程序都包含自己的日志记录或跟踪 API。根据此规则,欧盟 SEMPER 项目决定编写自己的跟踪 API。这发生在 1996 年初。经过无数次增强、几次迭代和大量工作,该 API 发展成为 log4j,一个流行的 Java 日志记录包。该包在 Apache 软件许可证 下分发,该许可证是 开源 倡议认证的成熟的开源许可证。最新的 log4j 版本,包括完整的源代码、类文件和文档,可以在 https://logging.apache.ac.cn/log4j/2.x/index.html 找到。

在代码中插入日志语句是一种调试代码的低技术方法。它也可能是唯一的方法,因为调试器并不总是可用或适用。这通常是多线程应用程序和大型分布式应用程序的情况。

经验表明,日志记录是开发周期中的一个重要组成部分。它提供了几个优势。它提供了有关应用程序运行的精确上下文。一旦插入代码,生成日志输出不需要人工干预。此外,日志输出可以保存在持久介质中,以便在以后进行研究。除了在开发周期中的使用之外,一个足够丰富的日志记录包也可以被视为一种审计工具。

正如 Brian W. Kernighan 和 Rob Pike 在他们真正优秀的著作“编程实践”中所说:

作为个人选择,我们倾向于不使用调试器,除了获取堆栈跟踪或一两个变量的值。其中一个原因是,很容易迷失在复杂数据结构和控制流的细节中;我们发现逐步执行程序不如多加思考并在关键位置添加输出语句和自检代码更有成效。单击语句比扫描明智放置的显示的输出花费的时间更长。决定在哪里放置打印语句比单步执行到代码的关键部分花费的时间更少,即使假设我们知道在哪里。更重要的是,调试语句会保留在程序中;调试会话是短暂的。

日志记录确实有其缺点。它会减慢应用程序的速度。如果过于冗长,它会导致滚动失明。为了缓解这些问题,log4j 被设计为可靠、快速且可扩展的。由于日志记录很少是应用程序的主要重点,因此 log4j API 力求易于理解和使用。