我有一些 jar 文件将分发给使用 log4j 进行日志记录的客户端。我的问题是我应该在 jar 文件中包含一个 log4j.xml 配置,还是让客户在他们想要记录时提供一个?
我的感觉是将 log4j.xml 配置文件保留在客户端 jar 之外,因为 apache jar 文件都带有 log4j 日志记录,但没有 log4j.xml。
是的,别说了。当您的 log4j 配置文件被忽略时,这是一件非常令人讨厌的事情,因为您的应用程序的 60 个第三方库之一包含它自己的。
在您的情况下,log4j 的好处是您的 jar 真的不必担心它。log4j 的基本用例是:
debug("some message");
如果您要运送的 jar 将由更大的应用程序使用,那么理想情况下,您的代码将只执行上面列出的两个步骤。这样,您的代码将简单地从客户端应用程序中已配置的 log4j 实例中获取记录器对象。然后,您的生产代码就不必知道如何配置 log4j。
开发 jars 时需要查看的任何日志记录都可以通过在单元测试 setUp() 方法中配置 log4j 实例或类似的东西来完成,这些实例不会与发送到客户端的生产代码捆绑在一起。
我会在文档中放置一个您期望对您的客户有用的默认 log4j 配置。通过这种方式,感兴趣的人可以看到您有哪些日志记录选项(从用户的角度来看,通常某些类有更有趣的日志消息)。当我有一个使用 log4j 的第三方库并且它没有文档时,我觉得这很烦人,并且我的屏幕上有日志消息,我必须尝试弄清楚如何启用或抑制某些日志消息。
如果您在应用程序中使用 log4j,那么您将其包含在您的项目中。如果不是,那你为什么要把它放在那里?如果客户端 A 想要 log4j 1.2 版,而客户端 B 想要 log4j 1.3 版怎么办。
让他们决定他们的项目需要什么,并担心您的项目需要什么。
我会添加配置 xml 并加载它,并为用户显示不同的配置和选项。这将使他们或支持人员更容易启用附加日志记录。