Filename with date in Log4j

后端 未结 3 1125
轮回少年
轮回少年 2020-12-09 23:06

I\'m trying to append the current date to the log4j log file. So it would be something like this:

myApp-2011-01-07.log

The thing is that I do not want to us

相关标签:
3条回答
  • 2020-12-09 23:15

    Try setting this in your log4j.properties file:

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

    much more information can be found here http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html

    0 讨论(0)
  • 2020-12-09 23:31

    I think you could just set a system property in code to contain the current date:

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

    Then in your log4j.xml file you can use the system property when specifying the log file name in the appender:

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

    ETA: Now that I think about it you may have to setup the system property using a static initializer to make sure the property is set before log4j is configured.

    0 讨论(0)
  • 2020-12-09 23:37

    you can manage this quickly and highly mantainable by just creating your own Appender.

    Just create a Class like this :

        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);
       }
    }
    

    and place this in your properties:

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

    Now you can give any type of filename you want.

    0 讨论(0)
提交回复
热议问题