5

我有一些 jar 文件将分发给使用 log4j 进行日志记录的客户端。我的问题是我应该在 jar 文件中包含一个 log4j.xml 配置,还是让客户在他们想要记录时提供一个?

我的感觉是将 log4j.xml 配置文件保留在客户端 jar 之外,因为 apache jar 文件都带有 log4j 日志记录,但没有 log4j.xml。

4

5 回答 5

9

是的,别说了。当您的 log4j 配置文件被忽略时,这是一件非常令人讨厌的事情,因为您的应用程序的 60 个第三方库之一包含它自己的。

于 2009-06-16T16:12:22.510 回答
5

在您的情况下,log4j 的好处是您的 jar 真的不必担心它。log4j 的基本用例是:

  1. 获取当前类的记录器对象
  2. 调用该记录器上的方法之一,例如debug("some message");

如果您要运送的 jar 将由更大的应用程序使用,那么理想情况下,您的代码将只执行上面列出的两个步骤。这样,您的代码将简单地从客户端应用程序中已配置的 log4j 实例中获取记录器对象。然后,您的生产代码就不必知道如何配置 log4j。

开发 jars 时需要查看的任何日志记录都可以通过在单元测试 setUp() 方法中配置 log4j 实例或类似的东西来完成,这些实例不会与发送到客户端的生产代码捆绑在一起。

于 2009-06-16T16:29:28.233 回答
2

我会在文档中放置一个您期望对您的客户有用的默认 log4j 配置。通过这种方式,感兴趣的人可以看到您有哪些日志记录选项(从用户的角度来看,通常某些类有更有趣的日志消息)。当我有一个使用 log4j 的第三方库并且它没有文档时,我觉得这很烦人,并且我的屏幕上有日志消息,我必须尝试弄清楚如何启用或抑制某些日志消息。

于 2009-06-16T18:29:43.063 回答
0

如果您在应用程序中使用 log4j,那么您将其包含在您的项目中。如果不是,那你为什么要把它放在那里?如果客户端 A 想要 log4j 1.2 版,而客户端 B 想要 log4j 1.3 版怎么办。

让他们决定他们的项目需要什么,并担心您的项目需要什么。

于 2009-06-16T16:11:10.013 回答
0

我会添加配置 xml 并加载它,并为用户显示不同的配置和选项。这将使他们或支持人员更容易启用附加日志记录。

于 2009-06-16T16:49:37.003 回答