1.每天:’.’YYYY-MM-dd(默认)
2.每星期:’.’YYYY-ww
3.每月:’.’YYYY-MM
4.每隔半天:’.’YYYY-MM-dd-a
5.每小时:’.’YYYY-MM-dd-HH
6.每分钟:’.’YYYY-MM-dd-HH-mm
DailyRollingFileAppender需要设置的两个属性:datePattern和fileName。其中datePattern用于确定时间间隔以及当日志文件过了一个时间间隔后用于重命名之前的日志文件;fileName用于设置日志文件的初始名字。在实现过程中,datePattern用于实例化SimpleDateFormat,记录当前时间以及计算下一个时间间隔时间。在每次写日志操作之前先判断当前时间是否已经操作计算出的下一间隔时间,若是,则将之前的日志文件重命名(向日志文件名尾添加datePattern指定的时间信息),并创新的日志文件,同时重新设置当前时间以及下一次的时间间隔。
1 public void activateOptions() {
2super.activateOptions();
3if (datePattern != null && fileName != null) {
4now.setTime(System.currentTimeMillis());
5sdf = new SimpleDateFormat(datePattern);
6int type = computeCheckPeriod();
7printPeriodicity(type);
8rc.setType(type);
9File file = new File(fileName);
10scheduledFilename = fileName
11+ sdf.format(new Date(file.lastModified()));
12
13} else {
14LogLog.error("Either File or DatePattern options are not set for appender ["
15+ name + "].");
16}
17 }
18 void rollOver() throws IOException {
19if (datePattern == null) {
20errorHandler.error("Missing DatePattern option in rollOver().");
21return;
22}
23
24String datedFilename = fileName + sdf.format(now);
25if (scheduledFilename.equals(datedFilename)) {
26return;
27}
28this.closeFile();
29File target = new File(scheduledFilename);
30if (target.exists()) {
31target.delete();
32}
33File file = new File(fileName);
34boolean result = file.renameTo(target);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29497-3.html
措辞得体