结帖率: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();
    }
}

请问:如何实现文件日志功能?要求每天换一个文件。文件名以日期区分相关推荐

  1. 计算机文件管理没有桌面,电脑文件杂乱无章?可能你需要一个文件管理系统

    原标题:电脑文件杂乱无章?可能你需要一个文件管理系统 作为一个效率人士,除了需要学会时间管理,我们还要时刻管理好我们的工具,电脑是很重要的工具,工作生活学习都会用到电脑. 虽然现在手机已经很强大,但很 ...

  2. Java 将文件的内容复制到另一个文件

    java将一个文件的内容复制到另一个文件. 使用BufferedWriter类的read和write方法将一个文件的内容复制到另一个文件. 完整代码 import java.io.*;public c ...

  3. jquery 文件上传 触发两次_点击三次input按钮,前两次不选择任何文件,第三次选择一个文件,结果上传了3个文件,即发生了三次请求...

    点击三次input按钮,前两次不选择任何文件,第三次选择一个文件,结果页面上出现了3个文件,也就是上传了3个文件 我点击input,不选择任何文件,然后取消文件选择器的窗口,然后第二次次点击input ...

  4. java把一个文件的内容复制到另外一个文件

    /**  * java把一个文件的内容复制到另外一个文件  */ import java.io.File; import java.io.FileInputStream; import java.io ...

  5. Excel VBA 循环读取一个目录下面多个文件的内容,放到另外一个文件中

    循环读取一个目录下面多个文件的内容,放到另外一个文件中 Public Sub getInputInfo()On Error GoTo errl'OUT対象ファイル開くDim wbOut As Work ...

  6. QT文件日志系统(可选择出到文件,数据库,或者网络传输)

    文章目录 前言 一.源码如下 二.使用步骤 1.导入文件 2.其中有三种模型 总结 参考 前言 在软件打包好运行时候,如果遇到系统问题,如果没有日志系统很难很快的定位到问题的位置.这个时候就需要日志系 ...

  7. 服务器的日志用数据库还是文件,日志是写数据库好还是文件好,以及日志策略...

    日志是写数据库好还是文件好,以及日志策略 电脑版发表于:2019/6/4 21:36 先来看看大佬的一句话:离开需求谈技术都是扯淡 主要是看你的日志是为了只做一个存储归档,还是要把数据对统计与分析 如 ...

  8. python怎样判断一个文件是否存在_python如何判断一个文件是否存在

    python如何判断一个文件是否存在 发布时间:2020-09-23 11:38:42 来源:亿速云 阅读:82 作者:Leah python如何判断一个文件是否存在?针对这个问题,这篇文章详细介绍了 ...

  9. 用bash命令得到Windows一个目录下的所有文件并且把结果输入到一个文件

    方式一: 只用如下一条语句就可以了: tree/f>index.txt 放入一个文件中命名为"****.bat" 双击就会在该目录下生成一个index.txt文件,在这个文件 ...

  10. 如何快速将多个文件夹下内容合并到一个文件夹下

    在需要合并的文件夹路径下新建一个文件夹和txt文件,均命名为all 打开all.txt,输入如下内容: for /f "delims=" %%p in ('dir /b/ad') ...

最新文章

  1. 2021年大数据常用语言Scala(十二):基础语法学习 方法调用方式
  2. java.lang.NoSuchMethodError: No virtual method placeholder(I)Lcom/bumptech/
  3. mac 10.12显示隐藏文件
  4. java default locale_Java JSON.defaultLocale方法代码示例
  5. 官宣弃用Java 8!Kafka 3.0.0 新功能get
  6. Hdu 2089-不要62 数位dp
  7. python如何开启多进程_python如何写多进程
  8. PHP提取中文首字母
  9. 函数计算如何粘合云服务,提供端到端解决方案
  10. springboot MVC拓展配置
  11. state 全局值 设置 和获取
  12. 计算机金融sci,FINANCE AND STOCHASTICS《金融与随机分析》SSCI论文投稿_SSCI期刊大全_SSCI期刊点评_万维书刊网...
  13. oracle 对表重建索引,oracle 重建索引方法 分析
  14. 微软软件工程 第一周博客作业
  15. 隧道联系测量高程传递水准数据处理流程及说明
  16. 安利——程序猿必备笔记软件typora+坚果云
  17. 罗切斯特大学计算机科学硕士介绍,罗切斯特大学研究生计算机科学专业介绍
  18. resnet—吴恩达
  19. java 1st 2nd 3rd 4th_为啥第一是1ST,第二是2ND,第三是3RD,第四开始都是TH呢1ST、2ND、...-3rd-英语-耿佬杜同学...
  20. linux服务器监控

热门文章

  1. 工业交换机厂家有哪些,国产工业交换机品牌排行榜
  2. 工业POE供电交换机在安防应用中的优势有哪些?
  3. Profibus-DP光端机产品功能特点及技术参数详解
  4. 【渝粤教育】国家开放大学2018年秋季 1087t数学分析专题研究 参考试题
  5. 【渝粤教育】电大中专学习指南_1作业 题库
  6. 【渝粤题库】广东开放大学 市场营销 形成性考核
  7. E104-BT02蓝牙无线传输模块物联网芯片的智能控制、采集
  8. 物联网应用:蓝牙模块在智能门锁中的应用
  9. java notify视频_一个很好的小例子来演示java中的wait()和notify()方法
  10. suse linux 查看内存,Suse linux查询内存大小的指令是什么?