Log4j中包含日期的文件名

我正在尝试将当前日期追加到log4j日志文件中。 所以它会是这样的:

对myApp-2011-01-07.log

问题是我不想使用DailyRollingFileAppender。 原因是每天都会运行另一个脚本来备份logs文件夹中的所有内容。 这是在Tomcat5.5下运行的。

这可能在log4j中吗?

我想你可以在代码中设置一个系统属性来包含当前日期:

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

然后在log4j.xml文件中,在appender中指定日志文件名时可以使用system属性:

   

ETA:现在我考虑一下你可能需要使用静态初始化程序设置系统属性,以确保在配置log4j之前设置属性。

只需创建自己的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 

现在,您可以提供任何类型的文件名。

尝试在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