首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >像log4j这样的日志工具只在开发阶段有用吗?

像log4j这样的日志工具只在开发阶段有用吗?
EN

Stack Overflow用户
提问于 2016-06-24 15:51:54
回答 4查看 168关注 0票数 0

我需要记录连接到服务器的用户的活动,我应该使用log4j吗?或者log4j只在开发阶段是有益的?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-06-24 15:57:27

实际上,它们在开发过程中并不特别有用,System.out.println对于大多数开发人员调试日志非常有用,但是一旦部署了以下功能,它们就变得非常有用:

  • 滚动日志文件,这样它们就不会变得太大,从而允许不需要维护的连续操作。
  • 添加时间/日期,以便在一定时间内查看日志。
  • 动态地更改详细信息(您并不总是想要跟踪或调试信息,但是当系统运行不好时能够打开跟踪或调试信息可能是一个救星)
  • 把日志文件重新路由到一个更容易接近的地方.当您无法直接到达服务器时,Log4j可以将您的日志发送到各种数据库或其他位置。

我们的一些代码在每一行上都有跟踪语句。如果我们在开发过程中遇到问题,我们将调试/跟踪语句留在其中,并能够在需要时打开它们--几乎相当于单步遍历部署的代码。此外,大多数方法的顶部都有跟踪或调试语句,显示正在传递的参数和程序流--同样,在调试器不可用的部署系统中,这些语句非常有用。

所以简而言之,是的,它在开发之后是有用的。

编辑(回应评论问题)

举个例子。我正在开发的这个应用程序有20条日志。一种是“性能”,它记录数据的输入,包括时间--有时每秒超过一行。这个日志文件"Rolls“为10 in (大约每小时),但我们使用它来查找数据传递中的滞后。我们甚至使用其他软件来分析这个日志,有时我们会在数据定时中查找模式。

我们有一个单独的“错误”日志,记录所有错误级别的活动。当我们得到一堆其他日志信息时,这个日志不会滚动得太快而丢失数据。

还有另一个日志可以放置与Hibernate/SQL相关的问题,一个用于处理与消息队列相关的问题,另一个用于应用程序间缓存.

所有这些都通过log4j配置文件组合成一个“主”日志。我们可以将任何一个日志重新配置到一个不同的级别(例如,数据源存在身份验证问题,因此我们在该数据源上打开了它的调试级别,以找出服务器环境中发生了哪些变化以导致此问题)

即使一些日志在一个小时内滚动10 max (我们的最大文件大小)。Log4j会将它们滚动到.1和.2文件中,这样我们就可以根据需要保留10-50个。

所有这些都是通过配置文件完成的,并且可以在部署后进行更改,而无需重新构建系统。

编辑2--另一个想法

使用log4j和java日志接口的另一个有用点是,使用它的hibernate之类的库可以通过xml文件进行配置,而无需重新构建。

如果没有Log4j/java的日志API,您可以使用一个自定义API来控制日志,B)只有默认日志记录,或者C)没有来自该子系统的日志记录。但是,由于Hibernate使用java的API,所以可以在标准的、有文档化的xml配置文件中为"Hibernate“日志信息设置日志级别,甚至可以将其日志重新路由到数据库或其他日志设备。

票数 3
EN

Stack Overflow用户

发布于 2016-06-24 15:58:14

日志记录对于定位在生产代码中发生的错误尤其有用。在开发期间,您可以使用更强大的工具,如调试器。

当然,您必须意识到日志记录可能会影响性能,并会创建巨大的文件。这就是为什么像log4j这样的工具可以被配置为打开和关闭日志记录,或者控制它的冗长。

可以使用log4j,因为它是Java最常见的库。然而,我个人认为它的配置有点单一。

票数 1
EN

Stack Overflow用户

发布于 2016-06-24 16:09:04

使用记录器(如Log4j )的另一个原因是允许不同组件的日志记录级别不同。如果打开所有的日志,日志就会变得非常大和混乱。如果您知道要在日志中“放大”哪个区域的代码,则可以单独设置该区域的日志记录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38017416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档