log4j根据参数动态确定log文件路径

log4j.appender.myLogFile.File=E:/logs/test/main.log

上面这一行,是典型的log4j的log文件路径配置。那么,能否根据程序的不同参数,将log输出到不同的路径呢。答案是有的,实例代码如下

java代码:
public static Logger getLoggerByAccout1(String accout)
{
if (null == rootLog)
{
System.setProperty("myconfig.accout", accout);
rootLog = Logger.getRootLogger();
}
return rootLog;
}

log4j配置:
log4j.appender.myLogFile.File=E:/logs/${myconfig.accout}/main.log

先通过System.setProperty方法,写入myconfig.accout变量为4。这时候,log4j创建实例时,就会获取到${myconfig.accout}的值为4,于是,File的值,就是E:/logs/4/main.log了

注:
按道理来说,可以在java代码中配置File路径。但实际验证时,每次重新启动程序并输出log,log文件都会被完全覆盖,上一次程序输出的log,就都没了,还没找到解决办法。因此,也就不贴这个方法的代码了。
原文地址:https://www.cnblogs.com/javawebsoa/p/3112970.html