有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (4) 个答案

  1. # 1 楼答案

    日志记录对于定位生产代码中发生的错误特别有用。在开发过程中,你可以使用更强大的工具,比如调试器

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

    使用log4j是可以的,因为它是Java最常见的库。不过,我个人觉得它的配置有点单一

  2. # 2 楼答案

    1. 是(或任何其他日志框架/SLF4J
    2. 没有
  3. # 3 楼答案

    使用Log4j等记录器的另一个原因是,允许不同组件使用不同的日志记录级别。如果对所有内容都启用调试,日志可能会变得非常大和混乱。如果您知道要在日志中“放大”的代码区域,您可以单独增加该区域的日志记录

  4. # 4 楼答案

    实际上,它们在系统开发过程中并不是特别有用。出来println对于大多数开发人员调试日志记录来说都非常好,但一旦部署,以下功能将变得非常有用:

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

    我们的一些代码的每一行都有跟踪语句。如果我们在开发过程中遇到问题,我们会保留调试/跟踪语句,并在需要在生产中打开它们——几乎相当于单步执行部署的代码。此外,大多数方法的顶部都有trace或debug语句,显示传入的参数和程序流——这同样只适用于无法使用调试器的已部署系统

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

    编辑(回应评论问题)——

    举个例子。我正在开发的应用程序现在有20条日志。一个是“性能”,它记录输入的数据,包括计时——有时每秒超过一行。这个日志文件以10mb(大约每小时一次)的速度“滚动”,但我们使用它来查找数据传输中的延迟。我们甚至有时使用其他软件来分析这些日志,以寻找数据定时的模式

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

    还有另一个日志记录与Hibernate/SQL相关的问题,一个日志记录与消息队列相关的问题,另一个日志记录与应用程序间缓存相关的问题

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

    尽管有些日志在一小时内滚动10mb(我们的最大文件大小)。Log4j将把它们放入.1和.2文件中,这样我们可以根据需要保留10-50个

    所有这些都是通过配置文件完成的,部署后可以更改,而无需重建系统

    编辑2--另一个想法

    关于使用log4j和java日志接口的另一个有用之处是,像hibernate这样使用它的库可以通过xml文件进行配置,而无需重建

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