【问题标题】:3rd party jars creating log files3rd 方 jars 创建日志文件
【发布时间】:2009-02-04 15:16:05
【问题描述】:

所以我们今天遇到了一个有趣的问题。我们有一个使用一堆 3rd 方 jar 的 Java EE Web 应用程序。这包括休眠。

我们使用 SDK 附带的 Java 日志记录 API 进行日志记录。通常,我们在日志记录方面非常薄弱,但我们使用 log4j 创建它自己的日志文件的第 3 方 jar 之一遇到了这个问题。它不仅从自己的代码中记录语句,甚至开始为休眠代码编写调试,从而导致批处理作业立即记录 3 GB 的日志。

我有两个问题:

  1. 我需要解决这个日志记录问题(如果可能的话,我不希望拉出或修改第 3 方 jar 中的 log4j 配置)。除了修改或拉出第 3 方 jar 中的 log4j 配置,或者通过我自己的 log4j 配置覆盖第 3 方 jar 中的配置之外,是否还有一种好方法可以做到这一点?我不喜欢这两个选项中的任何一个,但我想做最好的事情。
  2. 我想问一下,期望第 3 方库愉快地注销是否符合规定?我认为这是一个糟糕的设计。我想征求社区对此的意见。

我希望第 3 方库记录错误。话虽如此,我认为这个第 3 方 jar 从它负责的包以外的包中记录 DEBUG 有点尴尬。例如就我而言,这个第 3 方 jar 正在记录 Hibernate 调试,即使它甚至没有调用任何休眠方法。我们运行的批处理作业甚至没有调用这个 jar 中的 API。看起来让我自己的 log4j 配置覆盖其中的内容似乎是最好的方法。

【问题讨论】:

    标签: java logging log4j


    【解决方案1】:

    据我所知,您只需要在进行日志记录的 JAR 之前在类路径上提供您自己的 log4j 属性文件,这个文件就会被拾取。深入内存,Hibernate 至少从其 JAR 的根目录中提取了这一点,因此您无需打包属性。

    作为一个更广泛的问题,是的,我绝对希望我的库进行日志记录 - 否则如果没有日志,您怎么知道是否出了问题?

    【讨论】:

    • 我希望他们记录,但默认情况下只能在错误级别。 3GB 的调试级别日志非常可笑。
    • 我同意你的观点,Adam,另外,我希望他们记录库中的包,而不是其他包。在我的情况下,这个库正在愉快地记录 Hibernate 的调试。
    • 请提供更多详细信息:究竟如何将log4j.properties 添加到类路径中,例如在 Maven pom 情况下?
    【解决方案2】:

    如果他们使用 log4j 或其他常用的日志记录框架,您可以通过在类路径中更早地提供另一个 lo4j.properties 来覆盖其配置。在我看来,第 3 方日志记录是一件好事,只要您可以轻松配置所需的日志记录级别,如果他们使用 log4j 就是这种情况。将日志系统配置为输出更少的信息总是比使用 3rd 方代码添加日志更容易!

    【讨论】:

      猜你喜欢
      • 2014-04-10
      • 2017-02-25
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2012-05-01
      • 2020-07-27
      相关资源
      最近更新 更多