Имя файла с датой в Log4j - PullRequest
       43

Имя файла с датой в Log4j

6 голосов
/ 07 января 2011

Я пытаюсь добавить текущую дату в файл журнала log4j.Так что это будет примерно так:

myApp-2011-01-07.log

Дело в том, что я не хочу использовать DailyRollingFileAppender.Причина в том, что ежедневно будет запущен еще один скрипт, который будет делать резервные копии всего в папке журналов.Это работает под Tomcat5.5.

Возможно ли это в log4j?

Ответы [ 3 ]

13 голосов
/ 08 января 2011

Я думаю, вы могли бы просто установить системное свойство в коде, чтобы оно содержало текущую дату:

static{
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    System.setProperty("current.date", dateFormat.format(new Date()));
}

Тогда в вашем файле log4j.xml вы можете использовать системное свойство при указании имени файла журнала вappender:

<appender name="MYAPPENDER" class="org.apache.log4j.FileAppender">
    <param name="File" value="${user.home}/myApp-${current.date}.log" />

ETA: Теперь, когда я думаю об этом, вам, возможно, придется настроить системное свойство с помощью статического инициализатора, чтобы убедиться, что свойство установлено перед настройкой log4j.

11 голосов
/ 22 января 2014

Вы можете быстро и легко управлять этим, просто создав собственного Appender.

Просто создайте класс следующим образом:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import org.apache.log4j.FileAppender;

    public class CustomFileAppender extends  FileAppender{

    @Override
    public void setFile(String fileName)
    {
        if (fileName.indexOf("%timestamp") >= 0) {
            Date d = new Date();
            SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSS");
            fileName = fileName.replaceAll("%timestamp", format.format(d));
        }
        super.setFile(fileName);
   }
}

и поместите это в свои свойства:

   log4j.appender.file=com.portima.filenet.brio.ops.tools.CustomFileAppender
   log4j.appender.file.File=${log}/general.%timestamp.log

Теперь вы можете указать любой тип имени файла.

5 голосов
/ 08 января 2011

Попробуйте установить это в файле log4j.properties:

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=example.log

здесь можно найти гораздо больше информации http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html

...