我目前正在使用log4j中的DailyRollingFileAppender类来做日常日志文件附加,但我希望以下列格式分隔日志文件:
DATA.log.<date>_<time>_<random_#>
这应该在每个程序执行时执行一次,所以我最终会得到像......
这样的东西DATA.log.2011-01-13_12-46-38_<26>
DATA.log.2011-01-13_12-46-38_<79>
DATA.log.2011-01-13_12-46-38_<590>
可以将来自不同环境的不同日志文件合并在一起。
在没有扩展FileAppender类的情况下,有没有这样做呢?至少,有办法吗?
DATA.log.<date>_<time>_<sequential_#>.log
由于
编辑:我已经在使用DailyRollingFileAppender获取类似DATA.log.2011-01-13的内容。我想知道怎么做是在每个程序执行之后(或在每个程序执行之前)将日志文件翻转,并在最后添加一个随机数字字符串。
答案 0 :(得分:3)
查看:Setting a log file name to include current date in Log4j
编辑: 将此类添加到项目中,并将其用作appender:
import java.util.Random;
import org.apache.log4j.DailyRollingFileAppender;
public class MyAppender extends DailyRollingFileAppender {
@Override
public void setFile(String fileName) {
if (fileName.indexOf("%rnd") >= 0) {
Random r = new Random();
fileName = fileName.replaceAll("%rnd", Integer.toString(r.nextInt()));
}
super.setFile(fileName);
}
}
然后将appender的文件名设置为:filename。%rnd.log
log4j.appender.R=MyAppender.MyAppender
log4j.appender.R.File=.\\test.%rnd.log
答案 1 :(得分:1)
在您的代码中设置一个新的环境属性:
randomString = Long.toString(Math.abs((new Random()).nextLong()), Character.MAX_RADIX);
System.setProperty("randomString", randomString);
然后,在您的log4j文件中使用${randomString}
。
希望它有所帮助。