假设有一个jar包内有一个main方法:test
现在准备启动多个进程来执行这个test方法.并且每个进程输出的日志文件不相同.
1.在启动进程时自定义一个变量log4j.fileName, 如下:
java -Dlog4j.fileName=name1 -cp **** test.test
2.在log4j2.xml内配置日志文件名时,以${sys:log4j.fileName} 的形式获取第一步设定的参数name1, 示例如下
<Appenders>
<!-- Async Loggers will auto-flush in batches, so switch off immediateFlush. -->
<RandomAccessFile name="RandomAccessFile" fileName="${sys:log4j.fileName}.log" immediateFlush="false" append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
</PatternLayout>
</RandomAccessFile>
</Appenders>