客户端JAR包中的log4j.xml文件

5

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

我认为应该将log4j.xml配置文件排除在客户端jar文件之外,因为apache jar文件都带有log4j日志记录功能,但没有log4j.xml配置文件。

5个回答

9

是的,把它留出来。当你的log4j配置文件被忽略,因为你的应用程序中有60个第三方库包含了自己的配置文件时,这是一个非常麻烦的事情。


5
在您的情况下,log4j的好处在于您的jar文件不需要关心它。log4j的基本用法如下:
  1. 获取当前类的记录器对象
  2. 调用该记录器的方法之一,例如 debug("some message");
如果您要发布的jar文件将被更大的应用程序使用,则理想情况下您的代码只需执行上述两个步骤。这样,您的代码将仅从客户端应用程序中已配置的log4j实例中获取记录器对象。因此,您的生产代码与配置log4j无关。
您需要查看的任何日志记录都可以通过在单元测试setUp()方法或类似方法中配置log4j实例来完成,这些方法不会与发送到客户端的生产代码捆绑在一起。

2

我建议在文档中放置一个默认的log4j配置,这样有兴趣的人就可以看到您有哪些日志选项(通常某些类具有更有趣的日志消息,从用户的角度来看)。当我使用第三方库时,如果没有文档,屏幕上会有很多日志消息,我必须尝试弄清楚如何启用或禁止某些日志消息,我觉得这很烦人。


0
如果您的应用程序中使用了log4j,则需要将其包含在项目中。如果没有使用,那么为什么要把它放在那里呢?如果客户A想要log4j版本1.2,而客户B想要log4j版本1.3,该怎么办?
让他们决定他们项目所需的内容,而不是为你自己的需求而担心。

你可能指的是实际的log4j.jar依赖项,但我在谈论配置文件log4j.xml。 - Mike Pone
啊,是的,抱歉我错过了那个。我这里有一个项目,它依赖于这个ABIS jar文件。这个ABIS jar文件有它自己的log4j.xml配置文件。我的log4j参数有时会被导入的ABIS jar中的参数覆盖(将日志级别设置为ERROR而不是我设置的DEBUG)。我肯定会将其排除在外,让客户端设置他们自己的。 - amischiefr

0
我会添加配置XML文件,并加载它,为用户提供不同的配置和选项说明。这将使他们或支持人员更容易启用额外的日志记录。

这会强制客户编辑我的jar文件内容。我不确定是否可以称之为最佳实践。 - Mike Pone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接