Java测试序列化数据时的计数策略
来源:互联网 发布:办公室平台软件 编辑:程序博客网 时间:2024/06/08 10:07
近日测试中遇到一个需求,要使用程序不断地去监测指定的服务组件是否正在运行,一分钟检测一次,如果发现异常,就要将异常的信息捕获出来,然后记录到日志中,供开发人员排查。
可是在执行的过程中,发现一个问题,产生的日志在记入文件的时候,没有明确的行列标记,非常不便于操作,而且日志是追加模式的,在分类的情况下,要按分类查找更加困难。比如:
总共产生了1W条日志,info级别的8000条,error级别的500条,warning级别1500条,怎么样才能很好的组织这些数据,便于找出BUG,便于筛选呢?
我用了两套序数操纵这些数据,一套序数是每个类别的日志,有一个自己的序号,同时,还有一个全局的日志序号,这种情况下,不同的业务单元中产生的日志,只要推送到我这个单一的进程中,就能实现全局排序记录,局部也有序列,并且保存到了同一个文件中,便于集中处理。
实现如下:
/** * */package com;/** * @author Administrator * */public class HelloWorld {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubMyLog log1 = new MyLog();MyLog log2 = new MyLog();MyLog log3 = new MyLog();MyLog log4 = new MyLog();MyLog log5 = new MyLog();log1.write(1, "running");log1.write(2, "reopen");log2.write(1, "starting");log2.write(3, "crashed");log2.write(1, "resume");log3.write(1, "stoped");log4.write(1, "prompt");log5.write(2, "network failed");log5.write(1, "network normal");log5.write(2, "thread crash");log5.write(3, "connect failed");}}class MyLog {private static int nSerialNo = 0;// 0是info级别,1是warning级别,2是error级别final int INFO_TYPE = 0;final int WARNNING_TYPE = 1;final int ERROR_TYPE = 2;static int nInfoNo = 0;// 局部序号static int nWarnningNo = 0;static int nErrorNo = 0;private int nGolobalNo = 0;// 全局序号private String strMsg = "";// 日志消息public void write(int type, String msg) {strMsg = msg;nGolobalNo = (++nSerialNo);// 0是info级别,1是warning级别,2是error级别switch (type) {case INFO_TYPE:System.out.println("Log[info][" + nGolobalNo + "]" + "[" + (++nInfoNo) + "]:" + strMsg);break;case WARNNING_TYPE:System.out.println("Log[warning][" + nGolobalNo + "]" + "[" + (++nWarnningNo) + "]:" + strMsg);break;case ERROR_TYPE:System.out.println("Log[error][" + nGolobalNo + "]" + "[" + (++nErrorNo) + "]:" + strMsg);break;default:System.out.println("Log[unknow][" + nGolobalNo + "]" + "[" + "-" + "]:" + strMsg);break;}}}
0 0
- Java测试序列化数据时的计数策略
- Java 序列化的测试代码
- 数据的序列化
- 数据迁移类测试策略
- 关于序列化的测试
- 基于投票的热门计数算法策略
- 引用计数的一些测试
- 关于java/android 数据序列化后SerialVersionUID的获取
- spark2.0 Java序列化和Kyro序列化测试
- 【BZOJ1211】树的计数(HNOI2004)-Prufer序列+组合计数
- 大数据 memcache缓存序列化太慢策略
- PCB测试的策略
- 集成测试的策略
- 集成测试的策略
- 系统测试的策略
- BZOJ 1211 树的计数 Prufer序列
- bzoj1211 [HNOI2004]树的计数 prufer序列
- 【BZOJ1211】【HNOI2004】树的计数 prufer序列
- Android蓝牙串口通信模板及demo,trick
- MySql免安装版l配置方法
- 解析json文件
- HDU 1698 Just a Hook (线段树区间更新)
- hadoop2.2.0的配置
- Java测试序列化数据时的计数策略
- 数学推导+高精度进制转换+解同余方程 POJ 3708
- 从 NSURLConnection 到 NSURLSession
- Multi-University Training Contest 4 — 1002题
- Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?
- 设计模式-简介
- 工作了大半年是否该继续程序员之路
- string的反转
- Largest Rectangle in Histogram