您可以让 log4j 在您的情况下使用不同的文件,具体取决于日志记录配置中的系统属性。(这个 appender 可以在log4j extras项目中找到)例如
<appender name="R2" class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="logs/log_${appName}.log.%d" />
<param name="ActiveFileName" value="logs/log_${appName}.log" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %c -\n %-5p: %m%n" />
</layout>
</appender>
请参阅${appName}
:您可以将其作为启动参数传递给 vm,使用-DappName=MyApp
. 您也可以在运行时使用 设置它System.setProperty(.., ..)
,但这必须在 log4j 初始化之前发生。您的启动器进程决定了该属性的价值。
您将拥有看起来像log_MyApp.log
.
编辑:对不起,我错过了您正在使用属性文件并想要基于大小的滚动策略的事实。在这个文件中你可以写(但实际的技巧是一样的):
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File={myApp}.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
这是更完整的:http: //logging.apache.org/log4j/1.2/manual.html :)