日志记录是软件开发中的一个重要主题,特别是当您需要分析生产环境中的bug和其他意外事件时。实现日志记录通常很简单。但正如你可能经历过的,日志要比看起来复杂得多。这就是为什么你可以在博客上找到很多关于它的文章。
作为一名经验丰富的开发人员,您应该了解可用的不同日志记录框架、常见陷阱和最佳实践,当然还应该了解在常见部署场景中使用的日志文件的类型。在这篇文章中,我将关注后者。我将告诉你在几乎所有开发或生产环境中可以找到的四种不同类型的日志。
让我们从最常见的日志类型开始:应用程序日志。大多数开发人员在谈到日志记录时会想到这个日志。原因很简单。它们的应用程序生成此日志。它包含应用程序编写的各种错误消息、警告或其他事件。这些消息可以提供连接到特定用例的逻辑、高级信息。应用程序日志可能是本文中提到的最重要的日志类型,因为您已经对其进行了完全控制。每个日志消息需要提供有用的信息,帮助您了解应用程序的行为。典型的例子是:
在用例中发生的异常的堆栈跟踪。关于外部系统慢响应时间的警告消息。一个用例被触发或完成的信息。
下一个有趣和重要的类型是Web或应用服务器的日志。大多数企业应用程序被部署到web服务器(例如,Apache Tomcat)或应用服务器(例如,Wildfly或WebSphere.ty)。他们的日志文件为您提供有关技术问题和服务器当前状态的信息。每个服务器的配置和功能不同,我不会在本文中详细解释它们。但是请确保检查服务器的文档并相应地配置它。从服务器获取正确的信息可以在及时识别潜在问题和服务器停机之间产生差异。
还有一个不常见的日志是垃圾收集器日志。垃圾回收器提供自动内存管理。它跟踪在JVM内实例化的所有对象,并移除不再使用的对象。这是一项非常复杂的任务,有几种不同的垃圾收集器实现可用。一般来说,Java中的垃圾回收过程非常高效。这是非常有效的,有很多应用程序使用标准配置的默认实现。但是,如果应用程序必须处理高负载或使用许多复杂的对象结构,应用程序的性能可能会随着时间而降低。当垃圾收集器需要花费越来越多的时间来管理可用内存时,这种情况经常发生。垃圾收集器日志为您提供分析所有垃圾收集器活动的必要信息。默认情况下,垃圾收集器日志将被停用。您需要用一组命令行属性激活它。
所有先前讨论的日志都是由JVM或在JVM中运行的应用程序编写的。除了这些日志之外,程序员们还应该熟悉操作系统所写的日志。作为Java开发人员,您很可能永远不会自己编写这些日志。但是,您的操作系统将某些事件写入这些日志。作为部署的一部分的其他应用程序也可以这样做。因此,系统日志是一个了解外部事件的好地方。如果你在Windows上运行你的应用程序,这是事件日志。在Linux上,您应该知道系统日志服务及其后继者。