Как вы создаете файлы журнала в log4j для выполнения программы? - PullRequest
6 голосов
/ 14 января 2011

В настоящее время я использую класс DailyRollingFileAppender в log4j для добавления файла ежедневного журнала, но я хочу разделить файлы журнала в следующем формате:

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. То, что я хочу знать, как сделать, это заставить файл журнала переключаться после каждого выполнения программы (или перед каждым выполнением программы) и добавлять случайную числовую строку в конце.

Ответы [ 2 ]

3 голосов
/ 14 января 2011

посмотрите на: Установка имени файла журнала для включения текущей даты в 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);
    }
}

Затем просто установите имя файла вашего приложения для чего-то вроде: filename.% Rnd.log

log4j.appender.R=MyAppender.MyAppender
log4j.appender.R.File=.\\test.%rnd.log
1 голос
/ 14 января 2011

В вашем коде установите новое свойство среды:

randomString = Long.toString(Math.abs((new Random()).nextLong()), Character.MAX_RADIX);
System.setProperty("randomString", randomString);

Затем в файле log4j используйте эту переменную, используя ${randomString}.

Надеюсь, это поможет.

...