Java 客户端JAR中的log4j.xml

Java 客户端JAR中的log4j.xml,java,client,log4j,Java,Client,Log4j,我有一些jar文件将分发给使用log4j进行日志记录的客户机。我的问题是,我应该在jar文件中包含log4j.xml配置,还是让客户机提供一个配置(如果他们需要日志记录) 我的感觉是将log4j.xml配置文件放在客户机jar之外,因为apache jar文件都带有log4j日志记录,但没有log4j.xml。如果您在应用程序中使用log4j,那么您就将其包括在项目中。如果你不是,那你为什么要把它放在那里?如果客户机A需要log4j版本1.2,而客户机B需要log4j版本1.3,该怎么办 让他们

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


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

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


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

是的,不要说了。当你的log4j配置文件被忽略时,这是一个非常讨厌的问题,因为你的应用程序的60个第三方库中有一个包含它自己的库。

对于你来说,log4j的好处是你的jar真的不必担心它。log4j的基本用例是:

  • 获取当前类的记录器对象
  • 调用该记录器上的某个方法,例如
    debug(“某些消息”)
  • 如果您正在运送的jar将由一个更大的应用程序使用,那么理想情况下,您的代码将只执行上面列出的两个步骤。通过这种方式,您的代码只需从客户机应用程序中已配置的log4j实例获取记录器对象。然后,您的生产代码就不再需要知道如何配置log4j了


    在单元测试设置()中配置一个log4j实例,就可以完成JAR开发所需的任何日志记录方法或类似的东西,它们不会与发送到客户端的生产代码捆绑在一起。

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

    我将在文档中提供一个默认的log4j配置,您希望它对您的客户机有用。通过这种方式,感兴趣的人可以看到您有哪些日志选项(从用户的角度来看,通常某些类具有更有趣的日志消息)。当我有一个使用log4j的第三方lib并且它没有文档时,我觉得很烦人,而且我的屏幕上充斥着日志消息,我必须设法找出如何启用或抑制某些日志消息。

    您可能指的是实际的log4j.jar依赖性,但我指的是配置文件log4j.xml.Ahh是的,对不起,我错过了。我这里有一个项目,它依赖于这个ABIS jar文件。这个ABIS jar文件有自己的log4j.xml配置文件。我的log4j参数有时会被导入的abisjar中的参数覆盖(日志级别设置为ERROR,而不是我设置的调试级别)。我肯定会省去它,让客户端设置它们的。这迫使客户端编辑我的jar文件的内容。我不确定这是否是最佳实践。