我有一个包含多个依赖项的maven项目,并使用log4j.properties
来控制输出。在某些情况下,可以在具有不同参数的不同属性文件中引用相同的类。是否有“覆盖”属性的已定义协议,还是取决于加载包的顺序?
(我将所有log4j.properties
直接放在src/main/resources
下 - 这是正确的地方吗?)
更新: 我已经接受了@Assen的答案,因为虽然它不能使解决方案变得容易,但它有意义。基本上他建议从jar中排除log4j.properties。原则上我同意,但它给用户带来了控制输出的负担,我的大多数用户都不知道Java是什么,更不用说属性文件。 也许有一种方法可以在每个jar中重命名属性文件并使用开关(可能带有-D)来激活属性。
答案 0 :(得分:1)
我经常对项目进行类似的讨论。我认为log4j.properties通常是你想要保留 out 的应用程序,而不是将它打包在战争中并与代码一起交付。记录配置:
为什么要将日志记录配置与您的代码一起打包?我通常会在某个配置文件夹中保存,其中包含'dev','test-server-01','macbook-john'等文件夹。每个子文件夹都包含列表自己的log4j.properties副本。它们都不包含在构建工件中 - jar或war。
部署时,其中一个子文件夹将单独发送。对于测试服务器1,这将是test-server-01子文件夹的内容。依赖于所使用的应用程序服务器,thers是一种不同的技巧,可以将一些文件放在类路径上。
开发时,我会注意在路径上设置其中一个子文件夹。当约翰在他的macbook上开发时,他可能想把'macbook-jihn'放在类路径上,或者创建一个新的。他可以更改日志记录设置并提交而不会发生冲突。