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

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

有帮助吗?

解决方案

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

其他提示

在你的情况下,关于log4j的好处是你的jar真的不应该担心它。 log4j的基本用例是:

  1. 获取当前类的记录器对象
  2. 调用该记录器上的其中一个方法,例如 debug(" some message");
  3. 如果您要运送的罐子要由更大的应用程序使用,那么理想情况下,您的代码只会执行上面列出的两个步骤。这样,您的代码将只从客户端应用程序中已配置的log4j实例中获取记录器对象。然后,您的生产代码将与必须知道如何配置log4j分离。

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

我会提供一个默认的log4j配置,您希望它对文档中的客户端有用。这样有兴趣的人可以看到你有什么日志记录选项(从用户的角度来看,通常某些类有更多有趣的日志消息)。当我有一个使用log4j的第三方库并且它没有文档时,我觉得很烦人,并且我的屏幕上有日志消息,我不得不试图弄清楚如何启用或禁止某些日志消息。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top