扩展log4j系列[一]DailyRollingFileAppender的按分钟生成日志修改为按n分钟生成日志
来源:互联网 发布:ubuntu中setting在哪 编辑:程序博客网 时间:2024/05/08 03:41
复制DailyRollingFileAppender里面的源码,放在新命名的类public class MinuteRollingFileAppender extends FileAppender的里面,修改两个主要地方:
void rollOver() throws IOException {
/* Compute filename, but only if datePattern is specified */
if (datePattern == null) {
errorHandler.error("Missing DatePattern option in rollOver().");
return;
}
String datedFilename = fileName+sdf.format(now);
// It is too early to roll over because we are still within the
// bounds of the current interval. Rollover will occur once the
// next interval is reached.
if (scheduledFilename.equals(datedFilename)) {
return;
}
// close current file, and rename it to datedFilename
this.closeFile();
//File target = new File(scheduledFilename);
//modify start------
Calendar rollTime = Calendar.getInstance();
rollTime.add(Calendar.MINUTE, -1);
log.debug(" ===== log4j rolled file time :" + rollTime.getTime());
String minuteLog = fileName+sdf.format(rollTime.getTime());
File target = new File(minuteLog);
//modify end------
if (target.exists()) {
target.delete();
}
File file = new File(fileName);
boolean result = file.renameTo(target);
if(result) {
LogLog.debug(fileName +" -> "+ scheduledFilename);
} else {
LogLog.error("Failed to rename ["+fileName+"] to ["+scheduledFilename+"].");
}
try {
// This will also close the file. This is OK since multiple
// close operations are safe.
this.setFile(fileName, false, this.bufferedIO, this.bufferSize);
}
catch(IOException e) {
errorHandler.error("setFile("+fileName+", false) call failed.");
}
scheduledFilename = datedFilename;
}
//下面是按每隔15分钟生成一个日志
public Date getNextCheckDate(Date now) {
this.setTime(now);
switch(type) {
case MinuteRollingFileAppender.TOP_OF_MINUTE:
this.set(Calendar.SECOND, 0);
this.set(Calendar.MILLISECOND, 0);
//modify start------
this.add(Calendar.MINUTE, 15);
// modify end------
break;
default:
throw new IllegalStateException("Unknown periodicity type.");
}
return getTime();
}
//下面是在打印日志的事件里面过滤信息
protected void subAppend(LoggingEvent event) {
long n = System.currentTimeMillis();
if (n >= nextCheck) {
now.setTime(n);
nextCheck = rc.getNextCheckMillis(now);
try {
rollOver();
}
catch (IOException ioe) {
LogLog.error("rollOver() failed.", ioe);
}
}
log.debug(" == MinuteRollingFileAppender test LoggingEvent' message :" + event.getMessage());
String obj = this.layout.format(event);
//下面过滤掉空格、空行(注:linux下要加“/r/n”过滤才生效)
if (obj == null || obj.equals("")||obj.equals(" /r/n") || obj.equals(" /n"))
return;
super.subAppend(event);
}
- 扩展log4j系列[一]DailyRollingFileAppender的按分钟生成日志修改为按n分钟生成日志
- Log4j使用(一):每天生成一个日志文件DailyRollingFileAppender的使用
- 扩展log4j系列[一]为DailyRollingFileAppender加上maxBackupIndex属性
- log4net 日志文件 按分钟为文件名保存日志文件
- Log4j的扩展-支持设置最大日志数量MaxFileSize的DailyRollingFileAppender
- Log4j 为单独的类生成单独的日志文件
- log4j配置及日志按级别分别生成日志文件
- 扩展log4j系列[二]为DailyRollingFileAppender加上maxBackupIndex属性
- 扩展log4j系列[二]为DailyRollingFileAppender加上maxBackupIndex属性
- log4j(一) 生成日志文件
- log4j生成日志文件
- log4j生成有日期的日志文件名
- log4j生成有日期的日志文件名
- log4j 生成有日期的日志文件
- log4j生成有日期的日志文件名
- log4j配置生成html形式的日志
- 扩展DailyRollingFileAppender使其支持限定日志文件的数量
- log4j 五分钟生成一个文件(代码)
- 模仿
- MII和RMII接口详介
- 实现Ecshop与微信无缝整合的ecshop微信商城、ecshop微商城
- Linux串口调试配置_GRUB串口通信_串口登陆
- 个人特长?可能当时没有什么可写。
- 扩展log4j系列[一]DailyRollingFileAppender的按分钟生成日志修改为按n分钟生成日志
- 实现dtmf信号传输的相关笔记
- 基于Windows Embedded部署物流配货系统加快物流速度
- 【转载】销售管理系统的UML分析与设计
- OK,从今天开始
- 艺不压身和艺多不养家
- 扩展log4j系列[二]为DailyRollingFileAppender加上maxBackupIndex属性
- CSS filter:RevealTrans 用法
- 新站 如何让百度3天收录网站