使用一个单独的类封装日志记录,在该类中记录当前使用的文件名,每次记日志时获取一下系统时间,与文件名匹配一下,发现日期不同则新开文件。
下面是我利用jdk1.4附带的logging包写的日志记录类:package olcom.mp.opermanage.lom.term;import java.util.logging.*;
import olcom.mp.opermanage.util.DateFormator;
import java.io.*;
import java.util.Date;/**
* 记日志
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class TermLogging {
//logger
private Logger logger;
//输出处理
private FileHandler currentHandler;
//使用的日期
private String strCurrDate;
//输出级别
private Level level;
//日志路径
private String logPath = "term_log"; /**
* 构造函数
*/
public TermLogging(){
logger = Logger.getLogger("Term");
logger.setUseParentHandlers(false); strCurrDate = DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMdd"); try {
createDir(); currentHandler = new FileHandler( getFileName(),true );
logger.addHandler(currentHandler);
currentHandler.setFormatter(new TermFormatter()); } catch (IOException e) {
System.out.println("[OperManage]Log exception:" + e.getMessage() );
}
} /**
* 获取日志文件名
* @return
*/
private String getFileName(){
return logPath + "/term" + strCurrDate + ".log";
} /**
* 创建日志目录
*/
private void createDir() {
File fdir = new File(logPath);
if (!fdir.exists()) {
System.out.println("[OperManage]Create Term log dir");
if (fdir.mkdir() == false) {
System.out.println("[OperManage]Log dir create fail");
}
}
} /**
* 记日志
* @param info
*/
public void log(String info) {
//获取记日志时的日期
String strLogDate = DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMdd"); //如果日期和当前用的不一致,生成新的文件
if ( !strLogDate.equals(strCurrDate) ) {
strCurrDate = strLogDate;
logger.removeHandler(currentHandler);
try {
currentHandler = new FileHandler( getFileName(),true );
logger.addHandler(currentHandler);
currentHandler.setFormatter(new TermFormatter());
} catch (IOException e) {
System.out.println("[OperManage]Log exception:" + e.getMessage() );
}
} //记录
logger.log(OpLevel.TERM,info); }
}
/**
* 自定义消息级别
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
class OpLevel extends Level {
//定义自己的消息级别TERM
public static final Level TERM = new OpLevel("TERM", Level.INFO.intValue() + 50);
public OpLevel(String ln, int v) {
super(ln, v);
}
}/**
* 格式化日志记录
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
class TermFormatter extends Formatter { public String format(LogRecord rec) {
String dem = "\t"; StringBuffer buf = new StringBuffer(1000);
//作为消息ID
buf.append(rec.getMillis());
buf.append(dem); //时间
String time = DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMddHHmmss");
buf.append(time);
buf.append(dem);
//消息级别
buf.append(rec.getLevel());
buf.append(dem); //格式化日志记录数据
buf.append(formatMessage(rec));
//换行
buf.append('\n'); return buf.toString();
}
}
下面是我利用jdk1.4附带的logging包写的日志记录类:package olcom.mp.opermanage.lom.term;import java.util.logging.*;
import olcom.mp.opermanage.util.DateFormator;
import java.io.*;
import java.util.Date;/**
* 记日志
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class TermLogging {
//logger
private Logger logger;
//输出处理
private FileHandler currentHandler;
//使用的日期
private String strCurrDate;
//输出级别
private Level level;
//日志路径
private String logPath = "term_log"; /**
* 构造函数
*/
public TermLogging(){
logger = Logger.getLogger("Term");
logger.setUseParentHandlers(false); strCurrDate = DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMdd"); try {
createDir(); currentHandler = new FileHandler( getFileName(),true );
logger.addHandler(currentHandler);
currentHandler.setFormatter(new TermFormatter()); } catch (IOException e) {
System.out.println("[OperManage]Log exception:" + e.getMessage() );
}
} /**
* 获取日志文件名
* @return
*/
private String getFileName(){
return logPath + "/term" + strCurrDate + ".log";
} /**
* 创建日志目录
*/
private void createDir() {
File fdir = new File(logPath);
if (!fdir.exists()) {
System.out.println("[OperManage]Create Term log dir");
if (fdir.mkdir() == false) {
System.out.println("[OperManage]Log dir create fail");
}
}
} /**
* 记日志
* @param info
*/
public void log(String info) {
//获取记日志时的日期
String strLogDate = DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMdd"); //如果日期和当前用的不一致,生成新的文件
if ( !strLogDate.equals(strCurrDate) ) {
strCurrDate = strLogDate;
logger.removeHandler(currentHandler);
try {
currentHandler = new FileHandler( getFileName(),true );
logger.addHandler(currentHandler);
currentHandler.setFormatter(new TermFormatter());
} catch (IOException e) {
System.out.println("[OperManage]Log exception:" + e.getMessage() );
}
} //记录
logger.log(OpLevel.TERM,info); }
}
/**
* 自定义消息级别
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
class OpLevel extends Level {
//定义自己的消息级别TERM
public static final Level TERM = new OpLevel("TERM", Level.INFO.intValue() + 50);
public OpLevel(String ln, int v) {
super(ln, v);
}
}/**
* 格式化日志记录
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
class TermFormatter extends Formatter { public String format(LogRecord rec) {
String dem = "\t"; StringBuffer buf = new StringBuffer(1000);
//作为消息ID
buf.append(rec.getMillis());
buf.append(dem); //时间
String time = DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMddHHmmss");
buf.append(time);
buf.append(dem);
//消息级别
buf.append(rec.getLevel());
buf.append(dem); //格式化日志记录数据
buf.append(formatMessage(rec));
//换行
buf.append('\n'); return buf.toString();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货