使用logging完成日志功能

1.基本类

1.1.Logger

1.1.1.创建Logger

static Logger getLogger(String name)
为指定子系统查找或创建一个 logger。
注意:name是Logger的名称,当名称相同时候,同一个名称的Logger只创建一个。

1.1.2.Logger的级别
SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST

此外,还有一个级别OFF,可用来关闭日志记录,使用级别ALL启用所有消息的日志记录。

1.1.3.实例
  Logger L = Logger.getLogger("AppLogs");
  L.setLevel(Level.INFO);

1.2.FileHandler

Handler对象从Logger中获取日志信息,并将这些信息导出。例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。

1.2.1.实例
  public class LogFormatter extends Formatter {
  @Override  
  public String format(LogRecord record) {
    //日志写入格式
    return record.getMessage() + "\n";
  } 
}

  FileHandler fileHandler = null;
  try {
    fileHandler = new FileHandler("src/Log/AppLogs.txt");//设置保存文件位置
    fileHandler.setLevel(Level.INFO); //设置等级
    fileHandler.setFormatter(new LogFormatter());  //设置格式
    L.addHandler(fileHandler);//Handler从Logger获取日志信息
  } catch (SecurityException e) {
      e.printStackTrace();
  } catch (IOException e) {
     e.printStackTrace();
  }  

2.完成日志写入和读取

日志写入和读取类

public class LogApi {
  /**
   * 异常日志写入.
   * 
   * @param log 日志
   * @param myclass 类名
   * @param method 方法名
   * @param o 异常
   */
  public void writeExceptionLog(Logger log, String myclass, String method,OrbitExcetion o) {
    //操作日志(输入 日志, 类名,函数名, 异常)
    Calendar c = Calendar.getInstance();
    String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(c.getTime());
    log.info("Type: 0," + "Time: " + str + ",Class: " + myclass + ",Method: " + method
        + ",Infomation: " + o.getMessage() + "——");
  }

  /**
   * 操作日志写入.
   * @param log 日志
   * @param myclass 类名
   * @param method 方法名
   * @param operate 操作名
   */
  public void writeOperateLog(Logger log, String myclass, String method, String operate) {
    Calendar c = Calendar.getInstance();
    String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(c.getTime());
    log.info("Type: 1," + "Time: " + str + ",Class: " + myclass + ",Method: " + method
        + ",Infomation: " + operate + "——");
  } 

  /**
   * 日志读取.
   * @param filename 文件名
   * @return 分开的所有条日志
   */
  public List<String> readFiles(String filename) { //读取日志文件
    List<String> myBack = new ArrayList<>();
    try {
      FileReader f = new FileReader(new File(filename));
      BufferedReader input = new BufferedReader(f);
      String back = new String();
      String temp = new String();
      try {
        while ((temp = input.readLine()) != null) {
          back += temp;
        }
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      String[] tempAll = back.split("——");//获得分开的日志操作信息
      for (int i = 0; i < tempAll.length; i++) {
        myBack.add(tempAll[i]);
      }
      return myBack;
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return myBack;
  }
}

完成写入

  LogApi API = new LogApi();
  Logger L = new Logger("AppLog");
  API.writeOperateLog(L, "TrackGame", "readFiles", "readFiles");

完成读取

  LogApi API = new LogApi();
  List<String> ALL = API.readFiles(日志文件位置);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值