问题: 如何覆盖maven模块中的log4j.properties,该模块依赖于设置log4j.properties的模块?
问题描述:
我有一个项目,它包含一个Web应用程序和一个执行日常任务的jar。 最近我希望为每个文件记录不同的文件。
他们同时使用包含DAO连接,助手类等的通用jar。 log4J包含在公共模块中,因为日志记录发生在那里,以及依赖于公共模块的其他模块。
我正在使用maven来编译和打包所有三个模块(common,webApp,nightlyTasks)。
所有模块都使用包含以下内容的常见maven settings.xml文件:
<logging.folder>W:/WorkEnv/logs</logging.folder>
<logging.file>cars.log</logging.file>
<nightly.logging.file>carsNightly.log</nightly.logging.file>
在公共模块中,我有以下内容:
在pom.xml中:
<!--Logging-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
log4j.properties中的:
log=${logging.folder}
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/${logging.file}
一切正常 - 公共和Web应用程序模块执行的所有日志记录都转到W:/WorkEnv/logs/cars.log
在carsNighly模块中,我包含对公共模块的依赖:
<!-- carsCommon -->
<dependency>
<groupId>com.alton.cars</groupId>
<artifactId>carsCommon</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
并且在carsNightly中我还包含一个log4j.properties文件,其中包含以下内容:
#Use properties in jobsCommon and override here
log=${logging.folder}
log4j.appender.FILE.File=${log}/${nightly.logging.file}
(即使logging.folder是相同的,我已经包含它了,因为它在下一行被引用,但结果是相同的两种方式)
但是,carsNightly模块不会记录到不同的文件 - 它的输出被放在cars.log中
所以再问一遍: 如何覆盖maven模块中的log4j.properties,该模块依赖于设置log4j.properties的模块?即如何在carsNightly模块中设置log4j.properties,它们是公共模块中相同属性的不同值?
提前致谢。