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());
}
}
}