请问:如何实现文件日志功能?要求每天换一个文件。文件名以日期区分
2013-01-28 15:02
751 查看
结帖率:100% | #1 得分:0 回复于: 2004-06-22 17:24:13 使用一个单独的类封装日志记录,在该类中记录当前使用的文件名,每次记日志时获取一下系统时间,与文件名匹配一下,发现日期不同则新开文件。 下面是我利用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(); } } |
相关文章推荐
- 如何在一个工程里面实现不同的功能打入不同的日志文件中【log4net】
- 如何在一个工程里面实现不同的功能打入不同的日志文件中【log4net】
- C++按日期写日志文件,每天单独一个日志文件
- 编程实现文件的复制功能,要求源文件名及目标文件名在程序运行后根据提示输入
- log4 配置日期为滚动类型(每天产生一个日志文件)
- 自行控制loadrunner的socket协议性能测试 (转) 一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- python logging 模块之TimedRotatingFileHandler 实现每天一个日志文件
- 如何每天备份,每天生成一个日期备份文件?(參考貼)
- c#开发一个“记事本”程序,要求能够实现文件的新建、打开、编辑、保存功能
- 如何监控一个日志文件并验证,用tail的原理实现
- 每天学点linux--(用shell实现将一个文件夹下面的所有文件拷贝到另一个文件夹下/shell下如何重命名一个文件)
- 简单实现:如何把所有的日志记录到同一个文件中???
- 如何用VC60实现类似windows搜索文件的功能,针对文件夹中包含的文件名进行模糊查
- 做一个IOS聊天APP如何实现发送/预览文件的功能
- 每天生成自动生成一个日志文件,文件名以每天的时间结尾
- lighttpd中实现每天一个访问日志文件
- 如何实现TortoiseSVN日志过滤字符串的功能
- 论前后台如何实现web中文件下载功能