java重写logstash_Logstash(二)模拟生成log日志,纯java【使用内部类写】

packagecn.kgc.kb08.es.log;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.RandomAccessFile;importjava.text.MessageFormat;importjava.util.Random;importjava.util.concurrent.Executor;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;public classLogService {private ExecutorService es = Executors.newFixedThreadPool(50);private Random rand = newRandom();//userId//eventType

private String[] eventType ={"visit","btn_search","btn_page","btn_add_cart","btn_make_order","btn_pay"};//eventMonth//browser

private String[] browser = {"chrome","firefox","360","IE","猎豹"};//clickCount//timeZone

private String[] timeZone = {"开罗","伦敦","莫斯科","新德里","北京","悉尼","温哥华"};privateString path;publicLogService() {

}publicLogService(String path) {this.path =path;

}privateString makeMst(){

Object[] parts={//1-100000的随机数

String.valueOf(1+rand.nextInt(10000)),

eventType[rand.nextInt(eventType.length)],

MessageFormat.format("{0}-{1}", String.valueOf(2010+rand.nextInt(11)), 1+rand.nextInt(12)),

browser[rand.nextInt(browser.length)],1+rand.nextInt(100),

timeZone[rand.nextInt(timeZone.length)]

};return MessageFormat.format("{0};{1};{2};{3};{4};{5};",parts);

}public static voidmain (String[] args){

System.out.println(newLogService().makeMst());

}private class RandFileLog implementsRunnable{

@Overridepublic voidrun() {

String msg=makeMst();synchronized (RandomAccessFile.class){

RandomAccessFile raf= null;try{

raf= new RandomAccessFile(path,"rw");

raf.seek(raf.length());//windows系统中换行需要\r\n都用//raf.writeBytes(msg+"\r\n"); //linux下只能用于纯英语

raf.write((msg+"\r\n").getBytes()); //Linux下可以用中文

}catch(Exception e) {

e.printStackTrace();

}finally{if(null !=raf){try{

raf.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

}

}public void log(intcount){if(count <= 0){return;

}for (int i=0;i

es.submit((Runnable)newRandFileLog());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值