事实证明这比我最初预期的要简单——维克多的评论让我找到了正确的答案。我已经开始研究拥有多个配置文件(一个用于开发,一个用于生产),但后来意识到我真的不需要两个。在本地工作时,我并没有真正经历 Maven 构建过程——我只是在执行 Java 类。我唯一一次经历 Maven 构建过程是当我想打包我的应用程序以进行部署时。因此,我只是在我的 POM 文件中添加了一个使用 maven-antrun-plugin 的部分。我的最终代码最终看起来像这样:
文件:log4j.properties:
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
文件:log4j_production.properties
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A2
log4j.appender.A2=org.apache.log4j.net.SocketAppender
log4j.appender.A2.remoteHost=my.server.com
log4j.appender.A2.port=6000
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
文件:POM.xml
...
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete file="${project.build.outputDirectory}/log4j.properties"/>
<copy file="src/main/resources/log4j_production.properties"
toFile="${project.build.outputDirectory}/log4j.properties"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
...
这似乎奏效了。当我在本地运行时,我加载了 log4j.properties,它为我提供了一个控制台附加程序。当我为生产发行版打包时,Maven 会将默认的 log4j.properties 文件替换为使用套接字附加程序的备用文件。
谢谢!