如何在每个程序执行的log4j中创建日志文件?

Kev*_*vin 6 java logging log4j config

我目前正在使用log4j中的DailyRollingFileAppender类来做日常日志文件附加,但我希望以下列格式分隔日志文件:

DATA.log.<date>_<time>_<random_#>
Run Code Online (Sandbox Code Playgroud)

这应该在每个程序执行时执行一次,所以我最终会得到像......

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>
Run Code Online (Sandbox Code Playgroud)

来自不同环境的不同日志文件可以汇集在一起​​.

无论如何在没有扩展FileAppender类的情况下执行此操作?至少,有办法吗?

DATA.log.<date>_<time>_<sequential_#>.log
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑:我已经在使用DailyRollingFileAppender获取类似DATA.log.2011-01-13的内容.我想知道怎么做是在每个程序执行之后(或在每个程序执行之前)将日志文件翻转,并在结尾添加随机数字字符串.

Twi*_*ter 3

看一下:设置日志文件名以包含 Log4j 中的当前日期

编辑:将此类添加到您的项目中,并将其用作附加程序:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后只需将附加程序的文件名设置为:filename.%rnd.log

log4j.appender.R=MyAppender.MyAppender
log4j.appender.R.File=.\\test.%rnd.log
Run Code Online (Sandbox Code Playgroud)