我正在尝试将当前日期追加到log4j日志文件中。所以它会是这样的:
对myApp-2011-01-07.log
问题是我不想使用DailyRollingFileAppender。原因是每天运行的另一个脚本将备份logs文件夹中的所有内容。 这是在Tomcat5.5下运行。
这可能在log4j中吗?
答案 0 :(得分:13)
我认为您可以在代码中设置系统属性以包含当前日期:
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之前设置属性。
答案 1 :(得分:11)
只需创建自己的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
现在您可以提供任何类型的文件名。
答案 2 :(得分:5)
尝试在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