smhy8187

 

用JAVA写一个日志类程序以供大家学习

用JAVA写一个日志类程序以供大家学习
收藏本页到:雅虎收藏 新浪ViVi 365Key 天极网摘 和讯网摘 搜狐网摘 POCO网摘 字体:

中华网络安全联盟    作者:jacoo    来源:本站原创    时间:2006-4-18

说明:
    尽管JAVA类库和其他工具提供了不少的纪录程序运行状态的日志类,我发觉也
不是万能的,有时需要根据自己调试和跟踪需要,最好自己也要学会写日志类来
操作自己的日志,以跟踪程序的错误或其他信息。

下面,我就以我在WEB开发中根据自己的错误跟踪需要写了个日志类。

package myproject.logs;

import java.text.SimpleDateFormat;
import java.io.RandomAccessFile;
import java.io.*;

public class CreateLogs {
  private static final String CREATE_LOG_FILE_FOR_WINDOWS = "c:\\javalogs.txt";
  private static final String CREATE_LOG_FILE_FOR_LINUX = "/var/javalogs.txt";

  public static void  createLog(Exception e, String className) {
    String rootPath = CREATE_LOG_FILE_FOR_WINDOWS;
    if (File.separator.equals("/")) {
      rootPath = CREATE_LOG_FILE_FOR_LINUX;
    }
    try {
      java.util.Date date = new java.util.Date();
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String exceptionDate = dateFormat.format(date);

      //将异常输出到指定的文件下面
      RandomAccessFile raf = new RandomAccessFile(rootPath, "rw");
      raf.seek(raf.length());
      raf.writeBytes("errorTime is " + exceptionDate + "  errorClassName is " +
                     className +
                     "\n errorException is " + e.toString() + "\n");
      raf.close();
    }
    catch (Exception e1) {
      e1.printStackTrace();
    }
  }
}

以下以一个访问数据库的方法中来演示这个日志类的使用:

public class Dboperation{
...//要用到的其他属性和方法
public boolean userIsExist(String strUser) {//判断用户是否存在
    boolean isExist = false;
    DBConnect dbc = null;      //DBConnect是一个专门负责连接数据库的类
    try {
      dbc = new DBConnect();
      dbc.prepareStatement(
          "select department from address where username = ?");
      dbc.setBytes(1, strUser.getBytes("gb2312"));
      rs = dbc.executeQuery();
      if (rs.next()) {
        isExist = true;
      }
    }
    catch (Exception e) {
       CreateLogs.createLog(e,"Dboperation");    }
    finally {
      try {
        if (rs != null) {
          rs.close();
          rs = null;
        }
        dbc.close();
      }
      catch (Exception e) {
        CreateLogs.createLog(e,"Dboperation");
      }
    }
    return isExist;
  }


    这个日志类也没有特别的,但我觉得方便之处在于,可以准确定位
出现异常的的位置,当出现异常时,我可以很快找到出现错误的地方然后
找出问题的根因并解决掉问题。这个类也可以用在JSP中,这个时候
createLog(Exception e, String className)中的类名就是JSP的页面
名称了。

posted on 2007-06-26 14:32  new2008  阅读(1379)  评论(0编辑  收藏  举报

导航