これは、当初の予想よりも簡単であることが判明しました。Vikdor のコメントにより、正しい答えにたどり着きました。複数のプロファイル (1 つは開発用、もう 1 つは製品用) を持つことを検討し始めましたが、実際には 2 つ持つ必要がないことに後で気付きました。ローカルで作業しているときは、実際には Maven ビルド プロセスを実行していませんでした。Java クラスを実行しているだけでした。私が Maven ビルド プロセスを実行したのは、デプロイ用にアプリケーションをパッケージ化するときだけでした。そのため、maven-antrun-plugin を使用するセクションを POM ファイルに追加しただけです。私の最終的なコードは次のようになりました。
ファイル: 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 ファイルを、ソケット アペンダーを使用する別のファイルに置き換えます。
ありがとう!