我应该将 log4j.properties 文件放入库中吗?
Should I put log4j.properties file into library?
我有一个图书馆项目。该项目使用 log4j 进行日志记录。
我应该将 log4j.properties 放入生成的 jar 中吗?
如果这不是一个好的做法,你能告诉我为什么吗?
你应该把你的 log4j.properties 放在你的 jar 文件外面,因为它会更容易修改它。如果应用程序不强制重新加载配置(您可以这样做),那么简单的重启将加载配置(而在 jar 文件中修改它通常意味着重建)。如果应用程序确实知道如何重新加载它,那么您的更改几乎会立即应用。
当您在生产环境中拥有应用程序并且想要更改日志记录设置(如日志级别)以获取更多信息而不是为此停止应用程序(或更糟,重建它)时,这非常重要。
不,如果它只是一个库,我不会在您的 src/main/resources
中包含 log4j.properties
- 人们会使用您的库,并且人们将不得不配置它的记录方式。
但是还有一个问题:如果你把它放在你的jar 里,其他人也会在他们的类路径中有log4j。因此,如果他们想要为 log4j 进行自定义配置(他们会这样做),ClassLoader 将选择它可以找到的第一个文件。
此外,如果您有库,我建议您改用 slf4j
,这样您的用户就可以选择他们最喜欢的日志框架。
出于测试目的,可以在src/test/resources
中包含log4j。
我有一个图书馆项目。该项目使用 log4j 进行日志记录。
我应该将 log4j.properties 放入生成的 jar 中吗?
如果这不是一个好的做法,你能告诉我为什么吗?
你应该把你的 log4j.properties 放在你的 jar 文件外面,因为它会更容易修改它。如果应用程序不强制重新加载配置(您可以这样做),那么简单的重启将加载配置(而在 jar 文件中修改它通常意味着重建)。如果应用程序确实知道如何重新加载它,那么您的更改几乎会立即应用。 当您在生产环境中拥有应用程序并且想要更改日志记录设置(如日志级别)以获取更多信息而不是为此停止应用程序(或更糟,重建它)时,这非常重要。
不,如果它只是一个库,我不会在您的 src/main/resources
中包含 log4j.properties
- 人们会使用您的库,并且人们将不得不配置它的记录方式。
但是还有一个问题:如果你把它放在你的jar 里,其他人也会在他们的类路径中有log4j。因此,如果他们想要为 log4j 进行自定义配置(他们会这样做),ClassLoader 将选择它可以找到的第一个文件。
此外,如果您有库,我建议您改用 slf4j
,这样您的用户就可以选择他们最喜欢的日志框架。
出于测试目的,可以在src/test/resources
中包含log4j。